Restarting an activity in a single tab in a TabActivity?

北慕城南 提交于 2019-11-30 05:26:10

Slightly more dynamic solution:

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));

I've not tried this myself, but typically you access each individual tab's Activity using the LocalActivityManager. This can be retrieved in a TabActivity by using getLocalActivityManager().

It looks like you should be able to use destroyActivity() and startActivity() to restart an Activity, though I'm not exactly sure if this will work (as I've not done it myself). One important thing to note is that the id of the Activity will be equivalent to the tag you set for the tab (e.g., the String you provided to TabHost.newTabSpec(String)).

LocalActivityManager manager = getLocalActivityManager();
manager.destroyActivity("tab3", true);
manager.startActivity("tab3", new Intent(this, ThirdTab.class));

You can restart the Activity by setting flag. The code is as below.

spec = tabHost  .newTabSpec("tab1")
                .setIndicator("FirstActivity")
                .setContent(new Intent(this,MyFirstActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
tabHost.addTab(spec);
Pushan

Here is the solution:

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));
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!