TabHost中使用startActivityForResult無法接收返回值的解決方案

在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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章