android - ListActivity 与 ActionBar 支持 v7

标签 android list android-actionbar

我的主要 Activity 扩展了 ListActivity,现在我必须实现一个支持旧版本的 ActionBar。

我已经阅读了有关执行此操作的方法,并且我决定尝试这种方式:

我下载了ListActivity的源代码,我修改了一些东西,现在我需要在这里实现ActionBar,所以我尝试将此Activity扩展到ActionbarActivity。这样,我将拥有一个自定义的 ActionBarListActivity,并且我可以将我的 Activity 扩展到这个自定义类,然后具有 ListActivity 和 ActionBar 的功能。

这些是我已完成的步骤:

  • 将支持 v7 库添加到我的项目
  • 将 @Style/Theme.AppCompat 设置为应用程序主题

但是当我尝试将 Activity 扩展到 ActionBarActivity 时,不允许我这样做,它说“ActionbarActivity 无法解析为类型”并建议将其更改为“ActionBar”(android.app)。我知道我必须导入“import android.support.v7.app.ActionBarActivity”,但它不允许我这样做。

那么,这里出了什么问题?

最佳答案

一种更简单的方法(下载源代码等)是将列表分解为 fragment ,然后将 fragment 包含在 Activity 中。我将概述实现这一目标的步骤:-

  1. 将列表拆分为它自己的布局 XML。因此,您最终将得到 2 个 XML - 一个用于 Activity “容器”,这将非常简单 - (请参阅步骤 2),另一个用于新的 fragment 布局,这将是列表的整体布局,但最重要的是包括一个<ListView>元素)。
  2. 包括 <FrameLayout> Activity 布局 XML 中的占位符(作为 fragment 的容器)。它将嵌套在顶层布局内(<RelativeLayout> 将作为顶层)。为占位符指定一个 ID,例如 myFragmentHolder .
  3. 创建一个新的 Fragment 类(扩展 ListFragment ),名为 MyListFragment .
  4. 将所有列表代码(例如 ArrayAdapter 代码等)移至新的 fragment 类中
  5. 您的 Activity 代码现在实际上只是一个包含 fragment 并管理 ActionBar 的外壳。要支持列表 fragment ,需要 onCreate()是调用 setContentView()并替换 fragment :- getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_ENTER_MASK).replace(R.id.myFragmentHolder, new MyListFragment(), "MY_LIST").commit(); 。 (“MY_LIST”是用于标识 fragment 的任意标记名称。它可以是任何内容 - 请阅读文档以获取更多信息)。
  6. 您的 Activity 仍应延续 ActionBarActivity .

现在您已经很好地分离了关注点。 Activity 管理 ActionBar,Fragment 管理 List。

关于android - ListActivity 与 ActionBar 支持 v7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157660/

相关文章:

android - 在横向模式下视频 View 不是全屏

git - 如何在 git 中仅获取唯一的提交

python - python中的命名字典

Android Fragment 布局中的重复对象

android - Android中的状态栏覆盖操作栏

android - 如何在操作栏中显示进度条,代替其他操作栏项目

Android 图像不显示在 imageview 中

java - 使用 srcCompat 时 ImageButton 不会显示图像

android - 错误 :Connection timed out: connect

java - 将 map 列表合并为单个 map