我有TabActivity。每个选项卡都指向子活动。这非常有效。
是否有任何聪明的方法来刷新其中一个活动标签?我只想“重新启动”标签#3中的活动。除了构建对活动本身的刷新支持,或清除所有选项卡并重新创建所有选项卡之外,还不确定这样做的好方法。
谢谢,
答案 0 :(得分: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));
答案 1 :(得分:4)
我自己没有尝试过,但通常您使用LocalActivityManager
访问每个标签Activity
。可以使用getLocalActivityManager()
在TabActivity
中检索此内容。
看起来您应该可以使用destroyActivity()
和startActivity()
重新启动一个活动,但我不确定这是否有效(因为我自己没有这样做)。需要注意的一件重要事情是,活动的id
将等同于您为标签设置的标记(例如,您提供给TabHost.newTabSpec(String)
的字符串)。
LocalActivityManager manager = getLocalActivityManager();
manager.destroyActivity("tab3", true);
manager.startActivity("tab3", new Intent(this, ThirdTab.class));
答案 2 :(得分:4)
您可以通过设置标志重新启动活动。代码如下。
spec = tabHost .newTabSpec("tab1")
.setIndicator("FirstActivity")
.setContent(new Intent(this,MyFirstActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
tabHost.addTab(spec);
答案 3 :(得分: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));
}