【问题标题】:Is it better to create new Activities or just create a different Layout and replace the existing layout?是创建新的活动更好还是只创建一个不同的布局并替换现有的布局?
【发布时间】:2011-01-02 01:48:36
【问题描述】:

由于我是 Android 新手,我现在正在思考什么是正确的做事方式。

就目前而言,我正在编写的应用程序有 4 个不同的屏幕:

  • 屏幕 1 - 节点列表(主屏幕)
  • 屏幕 2 - 选项菜单,带按钮的表格布局
  • 屏幕 3 - 导航
  • 屏幕 4 - 版本等文本详细信息

可以使用放置在顶部的“标题”视图导航到/从这些屏幕导航。然后标题有 4 个不同的按钮:

+--------------------+
| menu with buttons  |
+--------------------+
|                    |
|                    |
|                    |
|  C O N T E N T     |
|                    |
|                    |
|                    |
+--------------------+

main.xml 实际上只是一个包含 header.xml 和内容的 LinearLayout,在这种情况下是 ListView 中的节点列表

options.xml 几乎是一样的东西,它包括headerxml,然后是一堆按钮......

...其他两个屏幕以此类推。

因此,当我按下顶部标题/菜单中的一个按钮时,内容应该切换到该屏幕。 我的问题是:

  • 我应该为每个屏幕创建一个 Activity 吗?我在 Google 上读到:
    一个 Activity 为用户可以进行的一项重点工作提供了一个视觉用户界面。 因此可以解释为我应该为每个屏幕使用一个 Activity。

  • 我是否应该创建比启动更多的活动,然后在我想更改“内容”以上?

【问题讨论】:

  • 作为一个后续问题:在 header.xml 中定义的标题有 4 个按钮。我在哪里为这些附加点击侦听器?我没有 header.xml 的特定活动。我应该有那个吗?还是应该在我的 Main.java Activity 中附加监听器?

标签: android


【解决方案1】:

您可能应该为每个屏幕使用单独的Activity;否则,您最终需要跟踪当前正在显示哪个View,以及当用户切换到另一个窗口或来电等时所有当前未显示的状态。

如果您为每个功能使用单独的Activity,则更容易跟踪此状态。

但是,如果您决定将所有内容保存在单个 Activity 中,则可以查看 TabActivity 类。但是,也有一些注意事项会阻止您将 Activity 作为标签内容。


关于您的后续操作,很遗憾,您不能像通过 XML 使用 MenuItem 那样将 Intent 直接附加到 Button,但是您可以扩展 Activity 以创建自己的通用基类用一些代码来连接监听器。

类似:

public class BaseActivity extends Activity {
    protected View.OnClickListener mButtonListener;

    protected void setupHeaderButtons() {
        findViewById(R.id.header_btn_1).setOnClickListener(mButtonListener);
        // ...
        findViewById(R.id.header_btn_n).setOnClickListener(mButtonListener);
    }
}

public class FirstActivity extends BaseActivity {
    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.first_activity);

        // This needs to be done *after* the View has been inflated
        setupHeaderButtons();
    }
}

【讨论】:

  • 谢谢,您对我上面的后续问题有任何意见吗?标头是否应该在 Activity 上显示,我可以像使用 View 一样 它吗?
  • 我更新了我的答案。活动不能包含其他活动。但是一个 Activity 的布局可以包含其他布局。您只需使用 <include> 标记在每个 Activity 的布局 XML 中包含 header.xml。
  • 谢谢,后续回答。我去看看 =)
  • 我没有让它工作,我想我需要更多帮助,所以我在这里发布了一个新问题,stackoverflow.com/questions/2013865/…),并参考了这个帖子。再次感谢 =)
【解决方案2】:

我对 Android 也很陌生,但我的建议是创建 4 个不同的活动。原因是它对我来说似乎是一个“更干净”的实现。当然,还有更多的代码要写,但我宁愿有更多的小类而不是一个包含大量代码的大类。

【讨论】:

  • 谢谢回答 =) 如果您对我上面的后续问题有什么好说的,我很感激 =)
【解决方案3】:

不确定是否在任何子问题中提到了这一点,但如果您在 2.0 之前更改活动,则无法在它们之间设置动画。

因此,如果您有一个加载屏幕并希望它淡入菜单,您必须使用两个视图并在两者之间切换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多