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の起動
view plainco
2.親Activityを実現するonActivity Resultメソッド
3.カスタムインタフェース
4.サブActivityはonTabActivity Resultメソッドを実装する必要がある
注意サブActivityは必ずimplements OnTabActivity ResultListenerを実現する
そして書き直す
参照先:http://www.johdan.com/tabhost_do_not_-exist-_startactivityforresult.html
解決策は次のとおりです.
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