5

TabActivity があります。各タブは、サブ アクティビティを指しています。これはうまくいきます。

アクティビティ タブの 1 つを更新する賢い方法はありますか? たとえば、タブ#3でアクティビティを「再開」したいだけです。アクティビティ自体に更新サポートを組み込むか、すべてのタブをクリアしてすべてを再作成する以外に、これを行う良い方法がわかりません。

ありがとう、

4

4 に答える 4

6

もう少し動的なソリューション:

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));
于 2011-11-19T04:53:14.910 に答える
4

フラグを設定することでアクティビティを再開できます。コードは以下の通りです。

spec = tabHost  .newTabSpec("tab1")
                .setIndicator("FirstActivity")
                .setContent(new Intent(this,MyFirstActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
tabHost.addTab(spec);
于 2013-02-06T10:19:21.233 に答える
4

私はこれを自分で試したことはありませんが、通常ActivityLocalActivityManager. 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));
于 2010-03-12T01:17:55.327 に答える
1

解決策は次のとおりです。

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));
    }
于 2011-03-10T12:07:48.533 に答える