我的主要活动扩展了ListActivity,现在我必须实现一个支持旧版本的ActionBar。
我已经知道如何做到这一点,我决定尝试这种方式:
我下载了ListActivity的源代码,我修改了一些东西,现在我需要在这里实现ActionBar,所以我试图将这个Activity扩展到ActionbarActivity。这样,我就有了自定义ActionBarListActivity,我可以将Activity扩展到这个自定义类,然后使用ListActivity和ActionBar的功能。
这些是我已经完成的步骤:
但是当我试图将活动扩展到ActionBarActivity时,不要让我这样做,它说“ActionbarActivity无法解析为某种类型”并建议将其更改为“ActionBar”(android.app)。我知道我必须导入“import android.support.v7.app.ActionBarActivity”,但它不允许我这样做。
那么,这里出了什么问题?
答案 0 :(得分:3)
更简单的方法(下载源等)是将列表分解为片段,并在片段中包含片段。我将概述到达目的地的步骤: -
<ListView>
元素)。<FrameLayout>
占位符(作为片段的容器)。它将嵌套在顶层布局中(<RelativeLayout>
将作为顶层)。为占位符添加myFragmentHolder
。ListFragment
的新片段类(扩展MyListFragment
)。onCreate()
中支持列表片段,只需调用setContentView()
并替换片段: - getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_ENTER_MASK).replace(R.id.myFragmentHolder, new MyListFragment(), "MY_LIST").commit();
。 (“MY_LIST”是您用来标识片段的任意标记名称。它可以是任何内容 - 阅读文档以获取更多信息。)ActionBarActivity
。现在你有一个很好的分离关注点。 Activity管理ActionBar,Fragment管理List。
答案 1 :(得分:1)
听起来好像你特别是导入了这个库。
在eclipse中你需要右键点击项目,转到属性,在列表中选择Android,然后添加添加库
在文档中按照本教程
http://developer.android.com/tools/support-library/setup.html
<强>更新强>
试试这个:
将支持库从"sdk/extras/android/support/v7/appcompat"
导入为项目。
项目中的参考库(对于Eclipse,"Properties - Android - Add"
)。
构建项目(对于Eclipse,"Projects - Build All"
)。确保您的主项目gen文件夹中有"android.support.v7.appcompat"
。
如果仍然无法解决您的问题,请重启eclipse。
然后清理并重建项目
如果问题仍然存在,请从您的计算机中删除支持库并重新下载并按照上述步骤操作。
答案 2 :(得分:1)
谢谢Nebu的精彩解释。
Theo,为简单起见,您可以查看本教程,了解如何使用ListView对象将ListActivity更改为ActionBarActivity。 (http://www.opensourcealternative.org/tutorials/android-tutorials/simple-android-listview-without-listactivity/)
但是,Theo,我会尝试用更多细节来澄清Nebu的说明,以便尝试回答有关他的指示的问题。
Theo,据我所知,这就是Nebu所说的需要做的事情。
在原始活动的listactivity的XML中,您有一个FrameLayout。
您要将FrameLayout元素复制到ListFragment的新XML中,而FrameLayout将是该新XML文件中的根元素。
在原始活动的XML文件中,将原始FrameLayout元素替换为FrameLayout元素和ID的简单声明,只是XML元素的开始和结束标记,不带任何子元素。这将用于在运行时使用ListFragment中的那个填充FrameLayout。
R.id.myFragmentHolder是原始活动的XML文件中FragmentLayout占位符的ID。
“new MyListFragment()”调用正在调用新ListFragment类的构造函数。
“MyList”可以是任何字符串,我个人会更加描述我正在使用的列表,但这并不重要。在Google上搜索Android片段标签以了解有关标签的更多信息。
扩展ActionBarActivity时,除非在替换原始ListActivity类的actionbaractivity类中导入android.support.v7.app.actionbaractivity,否则会出现错误。
如果我遗漏了任何内容或有任何不清楚的地方,请告诉我。