gpt4 book ai didi

android - 支持 ActionBar 的 ListActivity v7

转载 作者:太空狗 更新时间:2023-10-29 16:39:04 26 4
gpt4 key购买 nike

我的主要 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. 创建一个名为 say, ListFragment 的新 fragment 类(扩展 MyListFragment) .
  4. 将所有列表代码(例如 ArrayAdapter 代码等)移动到新的 fragment 类中
  5. 您的 Activity 代码现在实际上只是一个外壳,用于包含 fragment 和管理 ActionBar。在 onCreate() 中支持所有需要的列表 fragment 是对 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 - 支持 ActionBar 的 ListActivity v7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21157660/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com