【问题标题】:Can an Android activity call itself? [closed]Android Activity 可以调用自身吗? [关闭]
【发布时间】:2014-06-27 11:32:21
【问题描述】:

当创建一个新的 Intent 来启动一个新的活动时,一个活动是否可以调用自己,这是一种很好的程序技术。例如,假设我有一个活动模板,为了避免制作 10 个不同的活动,让同一个活动自己调用是否方便?

【问题讨论】:

  • 是的,你可以,但这不是好的技术......
  • @CapDroid 有什么原因吗?
  • @IllegalArgument 首先告诉我你为什么要再次调用相同的活动?
  • @IllegalArgument 你也可以在不调用新活动的情况下做同样的事情,只需刷新你的视图,可见/不可见视图......等等
  • @user3774329 提出新问题。

标签: java android android-intent android-activity


【解决方案1】:

是的。如果您的要求是这样的,那么这样做没有害处。如果你使用它,那么不要忘记调用finish()。 finish() 将从 backstack 中删除活动,因此当您按下返回时,您不会返回到同一活动的先前实例。

startActivity(new Intent(MyClass.this,MyClass.class));
finish();

【讨论】:

  • 它只是普通的类和使用它是一样的:)
  • @user3455363 是的,但请考虑后退按钮。我担心如果用户按下后退按钮,它只会重新加载相同的活动
  • @user3455363 对于这种情况不要调用finish()
【解决方案2】:

是的,您可以这样做,但是您应该考虑 onBackPressed() 行为,因为当用户继续按下时,您不希望从堆栈中出现相同的活动。 你可以使用 intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TOP );以确保只为同一活动创建一个实例。

【讨论】:

  • 有趣。因此,使用该方法,用户可以按下后退按钮,它会返回到以前版本的活动
  • 当你调用intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);它只会检查堆栈中是否有相同的活动,然后完成并开始新的活动。所以总是你在堆栈中只有一个活动
猜你喜欢
  • 2017-07-29
  • 2014-09-02
  • 2017-01-13
  • 1970-01-01
  • 2011-10-21
  • 2017-04-04
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多