【问题标题】:Why does'nt calling Finish() immediately close my activity?为什么不调用 Finish() 立即关闭我的活动?
【发布时间】:2012-09-18 06:40:22
【问题描述】:

这是我的场景。

  1. Activity1 启动 - 我的初始屏幕显示
  2. 用户点击登录按钮
  3. 登录活动运行 - 登录屏幕显示
  4. 用户输入用户名和密码,点击提交按钮
  5. 如果用户 ID 和密码有效,则 StartActivity 到 FeaturesMenu 活动被执行,得到第 7 步
  6. Userid 和 Password 无效,在 SignOn 屏幕的视图中在 textview 中设置消息,输入更正并单击提交按钮或单击取消按钮并调用 Finish()。
  7. FeatureMenu Activity 运行并显示按钮列表供用户单击。
  8. 用户单击按钮以列出来自 SQLite DB 的血压读数,光标。
  9. BloodPressList Activity 的 StartAcitvity 正在运行。
  10. 然后将光标绑定到 customCrusor 适配器和列表视图
  11. 与 BloodPressure List Activity 关联的屏幕按天显示每个读数条目的行列表。如果没有数据返回到光标,则显示空白屏幕。在任何一种情况下,屏幕底部都会显示一个标记为“完成”的按钮。
  12. 当用户单击完成按钮时,血压列表活动屏幕应该会消失,而功能菜单屏幕应该会返回。这样用户现在可以选择其他一些功能。顺便说一句,“完成”按钮除了调用 Finish() 之外什么都不做。实际发生的是血压列表活动屏幕闪烁并保持显示。当我再次单击完成时,它最终消失并显示功能菜单。

什么给了?为什么对 Finish 的调用没有立即将我带回功能菜单。为什么我需要点击两次完成按钮?

【问题讨论】:

  • 我会阅读代码,但是这个,嗯。

标签: android android-activity


【解决方案1】:

您必须有两个血压列表活动实例。

【讨论】:

    【解决方案2】:

    听起来您正在启动 ListActivity 的两个实例,我猜您在步骤 8-9 或步骤 11 中做了一些奇怪的事情。但是您必须发布一些代码才能真正帮助我们你。

    【讨论】:

    • 感谢您的回复。我发现了解决方案。例如,我将属性 NoHistory=true 添加到将执行 StartActivity(typeof(AuthUser) 的那些活动。然后,在此示例中,当 AuthUser 活动例如找到授权用户时,它会执行 StartActivity(typeof(FeaturesMenu)。注意:我还保存了我需要在 Preferences 中的其他 StartActivitys 中引用的任何数据。
    猜你喜欢
    • 1970-01-01
    • 2020-12-04
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2013-10-27
    相关资源
    最近更新 更多