在Viewpager的子Activity中startActivityForResult调用其他Activity时候遭遇到onActivityResult方法不响应的问题,
解决这个问题的办法如下:
1、先在父Activity里里初始化子Activity
localActivityManager = new LocalActivityManager(this, true);
localActivityManager.dispatchCreate(savedInstanceState);//必须被调用
List<View> viewList = new ArrayList<View>();
Intent intent = new Intent(this, SignInActivity.class);
View signInView =localActivityManager.startActivity("SignInActivity", intent).getDecorView();
viewList.add(signInView);
Intent intent2 = new Intent(this, StatisticsActivity.class);
View statisticsView =localActivityManager.startActivity("StatisticsActivity", intent2).getDecorView();
viewList.add(statisticsView);
ViewPagerAdapter adapter = new ViewPagerAdapter(viewList);
vp_content.setAdapter(adapter);
2、实现父Activity的onActivityResult方法
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
//Activity activity =localActivityManager.getCurrentActivity();//这里返回的永远是viewpager最后一个activity
Activity activity =localActivityManager.getActivity("SignInActivity");
if(activity instanceof SignInActivity){
SignInActivity signInActivity =(SignInActivity) activity;
signInActivity.<span style="color:#FF0000;">handleActivityResult</span>(requestCode, resultCode, data);
}
};
3、子Activity需要实现handleActivityResult方法
public void handleActivityResult(int requestCode, int resultCode,
Intent data) {
switch (requestCode) {
case SCANNIN_GREQUEST_CODE:
if(resultCode == RESULT_OK){
Bundle bundle = data.getExtras();
String resultString = bundle.getString("result");
Log.i("扫一扫", resultString);
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}