StartActivityForResult
的使用
看到这个的人相比都知道StartActivityForResult
是用来干嘛的,这里就不啰嗦了直接说使用方法吧
Activity A
需要启动Activity B
来进行用户操作,当操作完成之后需要将Activity B
的数据传回到Activity A
当中,这就需要使用StartActivityForResult
来启动Activity B
具体实现:
int requestCode = 0 ;
...
Intent intent = new Intent(...);
//intent用来传输数据,常用的类型都行,如果需要传输自定义的对象也是可行的
,只要实现 Serializable 或者 Parcelable接口即可
//也可以通过Bundle来传输数据
//Bundle bundle = new Bundle();
//bundle.putXxx(key, value);
//intent.putExtra(key_bundle,bundle);
intent.putExtra(mName, object);
...
startActivityForResult(intent, requestCode);
Activity B
中的处理
...前面步骤与Activity A中的操作一样,不同的是传递使用intent时调用的是
setResult(resultCode, intent);
this.finish();
接收Activity B
中数据的方法
要接收其他Activity
传回的数据,需要重写OnActivityResult()
方法,此方法在Activity
,Fragment
中皆有,如下
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == ADDPASSREQUESTCODE && resultCode == AddPassActivity.ADDPASSRESULTCODE) {
Bundle bundle = data.getBundleExtra(AddPassActivity.RESULTBUNDLE);
PassItem item = (PassItem) bundle.getSerializable(AddPassActivity.SERIALIZABLE_PASSITEM);
passItems.add(item);
mHandler.sendEmptyMessage(INITDATASUCCESS);
}
}
使用的时候部分内容记得不是太清晰,故做一下记录