为了账号安全,请及时绑定邮箱和手机立即绑定

(Kevin笔记四)activity相互切换的时候怎么传递和刷新数据

标签:
Android

Activity的数据传输的方式已经家喻户晓了,以下:

Note note = getItem( position );

Intent intent = new Intent( activity, AddEditNoteActivity.class );

intent .putExtra("note" , note);

activity .startActivity(intent );

其中,note是一个对象,只要这个对象实现了Serializable,就可以直接用intent传递过去了

接着来看看刷新数据是怎么实现的,这里可以介绍三种不同的方式

一、activity的跳转回调方式

不过在跳转方式的时候,使用如下:

Note note = getItem( position );

Intent intent = new Intent( activity, AddEditNoteActivity.class );

intent.putExtra( "note", note );

activity .startActivityForResult( intent , 10);

在跳转的方式中,使用startActivityForResult的方式来跳转,然后再对应的activity里面的重写方法:

@Override

protected void onActivityResult( int requestCode, int resultCode , Intent data ) {

         // TODO Auto-generated method stub

        super .onActivityResult(requestCode , resultCode, data );

            if (resultCode == Activity. RESULT_OK){

                 if (requestCode == 10){

                     loadNoteData();

                }

           }

     }

你会看到那个10就是上面跳转使用的requsetCode,然后从第二个activity跳转回来的时候就会直接调用这个方法,然后就可以刷新数据了(就如上述的loadNoteData)

二、第一个activity的静态对象直接在第二个activity里面调用

     在第一个activity里面,例如名称就是MainActivity

     public static MainActivity mainActivity;


      @Override

      protected void onCreate(Bundle savedInstanceState ) {

            super .onCreate( savedInstanceState );

           setContentView(R.layout. activity_main );

            mainActivity = this ;

     }

     先设置一个静态的activity对象,然后跳转到第二个activity之后,需要刷新第一个activity的数据的时候,就直接需要直接调用MainActivity.mainActivity.loadNoteData();(loadNoteData 是个刷新数据的方法)

三、使用广播的方式来刷新数据,Recevier+Handler的方式,我们来看看怎么样做到:

第一步、建立Receiver:

public class RefreshReceiver extends BroadcastReceiver {


      public static final String REFRESH_ACTION = "refresh" ;

      private Handler handler ;


      public RefreshReceiver(Handler handler ) {

            super ();

            this .handler = handler;

     }


      @Override

      public void onReceive(Context context , Intent intent) {

            // TODO Auto-generated method stub

           String action =intent .getAction();

            if (action .equals( REFRESH_ACTION)){

                Message message =new Message();

                 intent .putExtra("action" , action);

                 message .obj = intent;

                 handler .sendMessage(message );

           }

     }


}

这样在新建receiver对象的时候就可以把handler关联起来了

第二步、在第一个activity新建receiver对象

     RefreshReceiver refreshReceiver ;

     @Override

      protected void onCreate(Bundle savedInstanceState ) {

            super .onCreate(savedInstanceState );

            setContentView(R.layout. activity_main);

             refreshReceiver = new RefreshReceiver( new Handler(){


                 @Override

                 public void handleMessage(Message msg) {

                      // TODO Auto-generated method stub

                      super .handleMessage(msg );

                     loadNoteData();

                }


        });

        registerReceiver( refreshReceiver , new IntentFilter(RefreshReceiver.REFRESH_ACTION ));

}

不过记得在onDestroy调用unregisterReceiver( refreshReceiver );

第三步、在第二个activity需要刷新第一个activity的数据的时候,就直接需要直接调用

Intent intent = new Intent(RefreshReceiver. REFRESH_ACTION);

this .sendBroadcast(intent );

通过上面三步就可以通过Receiver+handler的方式来刷新你想要的数据了

如果想看看具体怎么样的操作,可以参考我的Kevin笔记(使用的是receiver+handler的方式):http://pan.baidu.com/s/1c1ZhQsK

搜索

复制

原文链接:http://www.apkbus.com/blog-11076-60259.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消