【问题标题】:Navigation between different layouts of my application在我的应用程序的不同布局之间导航
【发布时间】:2011-12-21 13:13:33
【问题描述】:

我的应用程序有 4 个不同的屏幕,我正在尝试设置一个类似选项卡的结构,只使用按钮。 为简单起见,我将它们称为 A、B、C、D。

现在在每个 Activity 的 onCreate 方法中,我有 3 个按钮 Button 侦听器(在 Activity A 中,我有 Button B、C、D 的侦听器),它们在按下相应按钮时触发 startActivity。

当我从 A->B 导航然后尝试使用按钮返回 B->A 时出现问题,我的应用程序崩溃了。我相信这是因为 A 在后台暂停,尝试启动它的新实例会使程序崩溃。

所以我想知道是否有办法在不创建新实例的情况下恢复活动 A? 我原以为会有某种 resumeActivity() 方法,但它似乎不存在。

感谢您的帮助。

【问题讨论】:

  • 您可以使用“ViewFlipper”在运行时翻转视图

标签: java android


【解决方案1】:

试试这个:

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

【讨论】:

  • 所以当我调用 startActivity() 并且活动已经开始并暂停时,它将转到 onResume() 而不是 onCreate()?
【解决方案2】:

你有很多方法可以做到这一点。

1) 将 Activity A 的 LaunchMode 设置为 SingleInstance

2) 不要用 Intent 调用 Activity A,只要完成 B,它就会自动显示 A。

3) 参见 this answer 并只制作一个基类并将其扩展至 A 到 D 的其他位置,并仅在基类中编写所有按钮单击。(为了简化您的代码)

4) 如有必要,活动 A 的Override onResume()

【讨论】:

    【解决方案3】:

    如果您不想自己制作整个功能,也可以使用TabHost
    这是一个教程:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

    【讨论】:

      【解决方案4】:

      使用TabActivity
      然后,如果您不想使用选项卡的默认实现,那么我认为您可以从 xml 中删除 <TabWidget> 并使用 TabHost.setCurrentTab 更改您所在的活动。

      【讨论】:

        【解决方案5】:

        您应该考虑改用Fragments。将 A、B、C 和 D 分别设为 Fragment,然后有一个单独的 Activity,仅处理 Fragments 之间的导航。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多