【问题标题】:Action Bar as Fragment动作栏作为片段
【发布时间】:2013-07-03 21:40:18
【问题描述】:

我刚开始开发 Android 应用,完全没有经验。我已经阅读了很多关于活动/片段/小部件的内容,但似乎没有找到我的问题的明确答案:

我是否可以将应用程序的操作栏创建为片段,这样每当我更改活动时,我都会简单地调用一个操作栏(即一个片段)?我打算开发一个动态 UI 来为单个选项创建片段,并认为在所有页面上都显示一个通用的操作栏会很容易。

【问题讨论】:

  • 欢迎来到 SO,苏珊。我已对您的问题投了赞成票,以提高其知名度。
  • @jahroy - 我查看它时没有任何答案,因此投票赞成。
  • 这是来自this page 的引用:“如果您的应用程序包含多个活动并且其中一些提供相同的选项菜单,请考虑创建一个除了 onCreateOptionsMenu() 和 onOptionsItemSelected 之外什么都不实现的活动() 方法。然后为应该共享相同选项菜单的每个活动扩展这个类......“这就是你的答案。

标签: java android


【解决方案1】:

当您想在所有活动中自定义 ActionBar 时,第一步是在 XML 中创建自定义主题。

在这个主题中,您几乎可以自定义所有内容

请参考这篇优秀的博文:http://android-developers.blogspot.be/2011/04/customizing-action-bar.html

为 ActionBar 使用 Fragment 太疯狂了!

如果您想以编程方式在所有活动中添加一些代码,只需扩展一个自定义 Activity,例如 MyCustomActivity,它扩展了 Activity。

public class MyCustomActivityextends Activity{

在这个类中,您可以使用 getActionBar() 并根据需要进行调整

【讨论】:

  • 扩展 Activity 听起来是一种非常简单的方法,可以让所有 Activity 共享同一个 ActionBar +1
【解决方案2】:

如果您想为所有活动使用一个 ActionBar,请使用继承。创建一个 Activity,它可以像您想要的那样简单地处理 ActionBar 并使其成为这样的超类。

public class ActionBarActivity extends Activity{

    public void onCreate(... ) {
    ActionBar actionBar = getActionBar();
    // + some other method calls of your choice
    }

    public onCreateOptionsMenu(Menu menu){
        // create your actionbaritems here
    }

    public boolean onOptionsItemSelected(MenuItem item) {
         // handle your click events for the items here
    }
}

现在您可以将此 Activity 用于所有具有继承性的 Activity:

public class MyActivity extends ActionBarActivity{
...
}

通过此设置,您可以随意使用 Fragments。

请记住,每次调用新 Activity 时,都会调用超类的回调。

【讨论】:

  • 为什么这被否决了?作为一个刚接触 Android 的人,我很好奇这是不是一个坏建议的真正原因。根据我的阅读,这听起来是一种非常可靠的方法,得到了许多人(包括 Google)的认可。
  • 这个答案不应该被否决。下面是直接来自Android documentation 的引用:“提示:如果您的应用程序包含多个活动并且其中一些提供相同的选项菜单,请考虑创建一个除了 onCreateOptionsMenu() 和 onOptionsItemSelected() 方法之外什么都不实现的活动。然后为应该共享相同选项菜单的每个活动扩展此类..."
【解决方案3】:

我想你的想法是这样的: 您希望您的操作栏在每个屏幕上都相同,并且只需要对其进行一次编程。 我使用的方法是,操作栏位于根活动中,包含单个查看器。用户与之交互的所有屏幕都是该视图寻呼机中的片段。

如果您在 Eclipse 中创建一个空白的 android 项目,并选择带有选项卡的 actionbar,该项目将为您设置它,您可以看到它是如何工作的。

【讨论】:

    【解决方案4】:

    在大多数情况下,这将是不必要的并发症。一旦开始,您可能会发现只需几行简单的代码即可在每个活动中创建一个“相同”的操作栏。主题等可以稍后添加。在这个阶段更好的问题可能是我应该使用 Action Bar Sherlock 来更好地支持旧设备吗?并且您应该考虑您的应用程序的整体结构,例如活动/片段活动/片段/选项卡,以便您能够快速运行一些可以在开发完整解决方案时轻松扩展的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 2015-02-20
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多