PagerTabStrip下某子Activity中,onActivityResult和startActivityForResult实现过程中遇到的问题
WiFiClientActivity下通过PagerTabStrip绑定三个子Activity:SettingActivity、HomeActivity、NetworkActivity。
HomeActivity中通过onActivityResult和startActivityForResult实现一个功能。
调试过程中发现HomeActivity中的onActivityResult一直不执行。
参考连接中的解决方案,大致了解了问题所在。(链接:http://www.cnblogs.com/relinson/archive/2012/03/25/startActivityForResult.html)
解决方法大致如下:
1.通过父Activity启动其他Activity;
2.实现父Activity的onActivityResult方法,将该处接收到的请求转发给当前活动的子Activity;
3.自定义一个转发接口用来实现第2步中的转发功能;
4.子Activity中实现第3步接口中的方法用来接收返回信息;
结合所给的解决方法,基本解决问题,但还有需要注意的地方,主要是在第2步中:
1 // 获取当前活动的Activity实例 2 Activity subActivity = getLocalActivityManager().getCurrentActivity();
如上代码中获取的subActivity实例为NetworkActivity,是我们在pagerTabScrip中添加的最后一个Activity,而我们需要的subActivity是HomeActivity。
我们可以通过LocalActivityManager的适用来解决这个问题:
1 final ArrayList<View> viewList = new ArrayList<View>();// 将要分页显示的View装入数组中 2 Intent setting_intent = new Intent(this, SettingActivity.class); 3 setting_intent.putExtra("WiFiAdmin", mWifiAdmin); 4 viewList.add(getView("A", setting_intent)); 5 manager.startActivity("A", setting_intent); 6 Intent home_intent = new Intent(this, HomeActivity.class); 7 home_intent.putExtra("WiFiAdmin", mWifiAdmin); 8 viewList.add(getView("B", home_intent)); 9 manager.startActivity("B", home_intent); 10 Intent wifi_intent = new Intent(this, NetworkActivity.class); 11 wifi_intent.putExtra("WiFiAdmin", mWifiAdmin); 12 viewList.add(getView("C", wifi_intent)); 13 manager.startActivity("C", wifi_intent);
然后通过LocalActivityManager.getActivity来获取得到HomeActivity。
1 Activity subActivity= manager.getActivity("B");
转载于:http://www.cnblogs.com/ttghc/articles/Android_PagerTabStrip_onActivityResult.html