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
搜索
复制
共同学习,写下你的评论
评论加载中...
作者其他优质文章