TabHostのActivityでonActivity Resultメソッドが呼び出されないソリューション

2343 ワード

プロジェクトではTabHostにサブActivityを埋め込むのに役立つが、TabHostのサブActivityでstartActivity ForResultが他のActivityを呼び出すとonActivity Resultメソッドが応答しないという問題に遭遇する.
解決策は次のとおりです.
1.親Activityで他のActivityを起動する.
2.親ActivityのonActivity Resultメソッドを実装し、そこで受信したリクエストを現在アクティブな子Activityに転送する.
3.転送インタフェースをカスタマイズして、第2ステップの転送機能を実現する.
4.サブActivityにおける第3ステップインタフェースを実装する方法は、戻り情報を受信するために使用される.
 
コードは次のとおりです.
1.親Activityによる他のActivityの起動
getParent().startActivityForResult(new Intent(...), REQUEST_CODE); 

view plainco
2.親Activityを実現するonActivity Resultメソッド
@Override  
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
         //  Activity   
         Activity subActivity = getLocalActivityManager().getCurrentActivity();  
         //   
         if (subActivity instanceof OnTabActivityResultListener) {  
             //   
             OnTabActivityResultListener listener = (OnTabActivityResultListener) subActivity;  
             // Activity  
             listener.onTabActivityResult(requestCode, resultCode, data);  
         }  
         super.onActivityResult(requestCode, resultCode, data);  
     }  

3.カスタムインタフェース
/** 
 *  Activity Activity  
 * @author Administrator 
 * 
 */  
public interface OnTabActivityResultListener {  
    public void onTabActivityResult(int requestCode, int resultCode, Intent data);  
} 

4.サブActivityはonTabActivity Resultメソッドを実装する必要がある
@Override  
    public void onTabActivityResult(int requestCode, int resultCode, Intent data) {  
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {  
            //   
        ...  
        }  
    }  

注意サブActivityは必ずimplements OnTabActivity ResultListenerを実現する
そして書き直す
public void onTabActivityResult(int requestCode, int resultCode, Intent data) {  
        if (resultCode == RESULT_OK) {  
            switch (requestCode) {  
            case SUB_REQUEST_CODE:  
                //Sub_History_visit();  
                break;  
  
            default:  
                break;  
            }  
        }  
    }  

参照先:http://www.johdan.com/tabhost_do_not_-exist-_startactivityforresult.html