【问题标题】:Warning opening a new Activity from an ActivityGroup within a TabActivity警告从 TabActivity 中的 ActivityGroup 打开新 Activity
【发布时间】:2011-03-15 02:42:54
【问题描述】:

我有一个带有多个选项卡的选项卡活动。每个选项卡都有一个与之关联的 ActivityGroup,并使用 LocalActivityManager 来处理本地活动堆栈。尽管我尚未对其进行任何广泛的调试,但这一切似乎都工作正常。

我的一些活动需要打开顶部没有 tabactivity 小部件的窗口。这对我来说似乎很简单,我把它称为任何其他活动:

Intent i = new Intent(this, ActivityLeaveTabs.class);
startActivity(i);  

老实说,一切似乎都很好,但是每次我离开 tabactivity 时都会收到以下警告:

无法保存哪个视图具有焦点,因为焦点视图 com.android.internal.policy.impl.PhoneWindow$DecorView@43e4a3888 没有 id

我应该提到,我是从一个活动中发送这个意图的,该活动是一个活动组的一部分,它本身代表选项卡活动中的一个选项卡。我怀疑问题出在从那里调用“startActivity(this,...”),但我使用 getParent() 尝试了一堆变体,但没有帮助。

我不太清楚警告的含义或者它是否真的是一个问题。任何帮助解决警告或是否有人可以告诉我不要担心(程序似乎运行良好)将不胜感激!

【问题讨论】:

    标签: android android-intent tabactivity activitygroup


    【解决方案1】:

    听起来这与在新活动出现时保存焦点有关。

    This 稍微阐明了这个问题; DecorView 包含您活动中的所有其他视图。通常没有理由让它有一个 id (尽管您可能能够以编程方式设置一个)。由于背景是否有焦点并不是什么大问题,我认为您可以放心地忽略此警告。

    一个有趣的测试是尝试通过按钮的onClick 或其他需要另一个视图获得焦点然后查看您是否仍然收到警告的东西来启动您的下一个活动。

    【讨论】:

    • 有趣的是,此时它实际上是从一个按钮的 onClick 启动的。所以是的,如果另一个视图首先获得焦点,它仍然会发生。
    • 我还必须承认,我对 Android 中的 focus 实际指的是什么并不完全清楚?
    • 如果我没记错的话,它会提供给您触摸的视图,例如按钮和 EditTexts,但对于那些拥有它的手机,它也可以通过方向键移动。
    • 明白了,这很有道理。与 ActionScript 相同的概念(这是我的假设,但没有任何充分的理由)感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    相关资源
    最近更新 更多