簡體   English   中英

在TabActivity的單個選項卡中重新啟動活動?

[英]Restarting an activity in a single tab in a TabActivity?

我有一個TabActivity。 每個選項卡都指向子活動。 這非常有效。

是否有任何聰明的方法來刷新其中一個活動標簽? 我只想“重新啟動”標簽#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);

我自己沒有嘗試過,但通常使用LocalActivityManager訪問每個單獨的選項卡的Activity 可以使用getLocalActivityManager()TabActivity檢索此內容。

看起來你應該能夠使用destroyActivity()startActivity()重新啟動一個Activity,雖然我不確定這是否可行(因為我自己沒有這樣做)。 需要注意的一件重要事情是,Activity的id將等同於為tab設置的標記(例如,您提供給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));
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM