在TabHost的子Activity中startActivityForResult調用其他Activity時候遭遇到onActivityResult方法不響應的問題.
解決辦法如下:
1.通過父Activity啟動其他Activity;
2.實現父Activity的onActivityResult方法,將該處接收到的請求轉發給當前活動的子Activity;
3.自定義一個轉發接口用來實現第2步中的轉發功能;
4.所有SubActivity中實現第3步接口中的onTabActivityResult方法用來接收返回信息;
代碼如下:
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.所有SubActivity需要實現onTabActivityResult方法
public class Sub1Activity implements OnTabActivityResultListener { //... @Override public void onTabActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { //實現該處邏輯 ... } } //... }
轉載於:http://www.cnblogs.com/relinson/archive/2012/03/25/startActivityForResult.html
