解決辦法如下:
1.通過父Activity啓動其他Activity;
2.實現父Activity的onActivityResult方法,將該處接收到的請求轉發給當前活動的子Activity;
3.自定義一個轉發接口用來實現第2步中的轉發功能;(需要新建一個接口文件)
4.子Activity中實現第3步接口中的方法用來接收返回信息;
代碼如下:
1.通過父Activity啓動其他Activity(此頁面爲TabHost的子頁面之一(如Tab1Activity.class)
1 getParent().startActivityForResult(new Intent(this,ChildActivity.class), REQUEST_CODE);
2.實現父Activity的onActivityResult方法(此方法需繼承ActivityGroup)
1 @Override 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 3 // 獲取當前活動的Activity實例 4 Activity subActivity = getLocalActivityManager().getCurrentActivity(); 5 //判斷是否實現返回值接口 6 if (subActivity instanceof OnTabActivityResultListener) { 7 //獲取返回值接口實例 8 OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity; 9 //轉發請求到子Activity 10 listener.onTabActivityResult(requestCode, resultCode, data); 11 } 12 super.onActivityResult(requestCode, resultCode, data); 13 }
另一種繼承Activity的調用方法如下:
1)先在onCreate中調用:
protected LocalActivityManager mLocalActivityManager;//定義當前活動對象列表
//繼承Activity
mTabHost = (TabHost) findViewById(R.id.tabhost);
// 注意下面這段
mLocalActivityManager = new LocalActivityManager(this, true); //注意true表示singleMode爲true,如果爲false,則mLocalActivityManager.getCurrentActivity()會取不到對象
mLocalActivityManager.dispatchCreate(savedInstanceState);
mTabHost.setup(mLocalActivityManager);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// 獲取當前活動的Activity實例
Activity subActivity =mLocalActivityManager.getCurrentActivity();
//subActivity = mLocalActivityManager.getActivity("TabsActivity");
//判斷是否實現返回值接口
if (subActivity instanceof TabActivityResultListener) {
//獲取返回值接口實例
TabActivityResultListener listener = (TabActivityResultListener) subActivity;
//轉發請求到子Activity
listener.onTabActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
3.自定義接口(新建的接口文件名爲:TabHostResultListener.java,內容如下:
/** * 解決子Activity無法接收Activity回調的問題 * @author Administrator * */ public interface OnTabActivityResultListener { public void onTabActivityResult(int requestCode, int resultCode, Intent data); }
4.子Activity需要實現onTabActivityResult方法(頁面名稱如:ChildActivity.java)
@Override public void onTabActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { //實現該處邏輯
... } }