在TabHost的子Activity中startActivityForResult調用其他Activity時候遭遇到onActivityResult方法不響應的問題.
解決辦法如下:
1.通過父Activity啓動其他Activity;
2.實現父Activity的onActivityResult方法,將該處接收到的請求轉發給當前活動的子Activity;
3.自定義一個轉發接口用來實現第2步中的轉發功能;
4.子Activity中實現第3步接口中的方法用來接收返回信息;
代碼如下:
1.通過父Activity啓動其他Activity
代碼如下:
1.通過父Activity啓動其他Activity
1 getParent().startActivityForResult(new Intent(...), REQUEST_CODE);
2.實現父Activity的onActivityResult方法
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 }
3.自定義接口
/** * 解決子Activity無法接收Activity回調的問題 * @author Administrator * */ public interface OnTabActivityResultListener { public void onTabActivityResult(int requestCode, int resultCode, Intent data); }
4.子Activity需要實現onTabActivityResult方法
@Override public void onTabActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { //實現該處邏輯
... } }
轉載:http://blog.csdn.net/simayilong/article/details/7596430