問題は次の通りです。3 つのタブを持つアプリケーションがあります。タブ内の項目とのさまざまなインタラクションを通じて、他のアクティビティが起動することになります。クライアントはこれを確認し、タブ内でアクティビティを起動してタブが表示されたままにし、ユーザーがタブをクリックすると、setContent 関数で定義された元のアクティビティに戻るようにしたいと考えています。これは可能ですか。また、他のアクティビティからこれを実行するにはどうすればよいですか? (つまり、TabHost を定義し、setContent を呼び出すアクセス権を持つアクティビティではなく、子アクティビティ)?
ベストアンサー1
タブ内でアクティビティを起動することが可能したがって、tabspec コンテンツを通常の Activity ではなく ActivityGroup に設定します。
tabHost.addTab(tabHost.newTabSpec("Tab")
.setIndicator("Tab")
.setContent(new Intent(this, YourActivityGROUP.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
その ActivityGroup 内から、現在いるタブのコンテンツ ビューのみを更新する、次のような別の Activity を開始できます。
class YourActivityGROUP extends ActivityGroup{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//you van get the local activitymanager to start the new activity
View view = getLocalActivityManager()
.startActivity("ReferenceName", new
Intent(this,YourActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
this.setContentView(view);
}
}