【问题标题】:How to re-create activity each time the tab is visited每次访问选项卡时如何重新创建活动
【发布时间】:2013-04-20 09:42:40
【问题描述】:

我有一个TabActivity,我想重新创建带有已访问选项卡的活动(每次访问调用onCreate() 的内容)。怎么样?

【问题讨论】:

  • 你可以使用 onResume() 方法。它每次都会加载它的包含:)
  • 完成当前活动并使用 Intent.FLAG_ACTIVITY_NEW_TASK 为您的活动调用意图 - 请参阅下面的答案

标签: android android-tabhost tabactivity


【解决方案1】:

你可以使用 ....

this.finish(); // this is instance of TabActivity

....关闭当前意图并使用

创建新意图
Intent intent = new Intent(this, TabActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 
startActivity(intent);

编辑: Intent.FLAG_ACTIVITY_CLEAR_TOP 实际上似乎也可以工作可能不会工作,因为虽然它旨在将现有活动 只是将带到前面(没有娱乐)。

查看this 了解更多信息。

干杯!

【讨论】:

【解决方案2】:
public void onResume()

每次活动进入前台时都会调用此方法。所以你需要做的就是重写这个方法

public void onResume(){
    super.onResume();
   // do your stuffs
}

要了解有关活动生命周期的更多信息,请参阅document

现在您每次都想调用 onCreate,似乎每次活动进入前台时您都有一些初始化任务。所以我的建议是使用onResume中的初始化东西而不是onCreate。

【讨论】:

  • 但这不会调用 onCreate
  • 为什么需要调用oncreate??
  • 他的要求是重新开始他的活动。意味着他希望 onCreate 中的内容在他通过选择选项卡返回活动时执行。
  • 是的,我认为您的回答也很有帮助..因为它在另一个问题中被接受..只是另一种不同的方法..我也有问题..可能是反对者有问题: ) .. 为你 +1
  • 谢谢..这不是我第一次回答这个检查这个stackoverflow.com/questions/15151960/… 还有更多,但我没有他们的链接
【解决方案3】:

在开始每个 Tab 的意图之前,将 Intent 标志设置为“清除顶部”。

即

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

在这个问题activity-in-tabactivity-doesnt-run-oncreate-method-when-clicked-second-time查看我的答案以供参考

【讨论】:

  • 让我知道投反对票的原因...这应该可行..查看我以前的答案链接以供参考..我从不在乎投反对票
  • 我根据jayxie.com/mirrors/android-sdk/resources/tutorials/views/…的例子进行了测试;出于某种原因,它实际上似乎可以工作,尽管这不符合规范(请参阅developer.android.com/reference/android/content/Intent.html)。无论如何,我不敢依赖它(不幸的是我无法拒绝我的反对票)......
  • @Trinimon 我问同样的问题,你可以使用clear_top 标志,正如你所说的有一个规范,我已经说过但我忘了包括No,这会改变含义。 . :P 它最初的开头是There is No specification..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多