TabActivity があります。各タブは、サブ アクティビティを指しています。これはうまくいきます。
アクティビティ タブの 1 つを更新する賢い方法はありますか? たとえば、タブ#3でアクティビティを「再開」したいだけです。アクティビティ自体に更新サポートを組み込むか、すべてのタブをクリアしてすべてを再作成する以外に、これを行う良い方法がわかりません。
ありがとう、
TabActivity があります。各タブは、サブ アクティビティを指しています。これはうまくいきます。
アクティビティ タブの 1 つを更新する賢い方法はありますか? たとえば、タブ#3でアクティビティを「再開」したいだけです。アクティビティ自体に更新サポートを組み込むか、すべてのタブをクリアしてすべてを再作成する以外に、これを行う良い方法がわかりません。
ありがとう、
もう少し動的なソリューション:
LocalActivityManager manager = getLocalActivityManager();
String currentTag = tabHost.getCurrentTabTag();
Class<? extends Activity> currentClass = manager.getCurrentActivity().getClass();
manager.destroyActivity(currentTag, true);
manager.startActivity(currentTag, new Intent(this, currentClass));
フラグを設定することでアクティビティを再開できます。コードは以下の通りです。
spec = tabHost .newTabSpec("tab1")
.setIndicator("FirstActivity")
.setContent(new Intent(this,MyFirstActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
tabHost.addTab(spec);
私はこれを自分で試したことはありませんが、通常Activity
、LocalActivityManager
. TabActivity
これは、を使用して取得できますgetLocalActivityManager()
。
destroyActivity()
アクティビティを使用して再起動できるはずですがstartActivity()
、これが機能するかどうかは正確にはわかりません (自分で行ったことがないため)。注意すべき重要な点の 1 つid
は、Activity の が、タブに設定したタグ (たとえば、 に指定した文字列) と同等になることですTabHost.newTabSpec(String)
。
LocalActivityManager manager = getLocalActivityManager();
manager.destroyActivity("tab3", true);
manager.startActivity("tab3", new Intent(this, ThirdTab.class));
解決策は次のとおりです。
tabHost.setOnTabChangedListener(this);
public void onTabChanged(String tabId) {
Log.d(LOG_KEY, tabId);
LocalActivityManager manager = getLocalActivityManager();
manager.destroyActivity("ID_1", true);
manager.startActivity("ID_1", new Intent(this, YourMyActivity.class));
}