我正在使用兼容性库将现有应用转换为Fragments API。我已经读过你应该更新将Activity扩展到现在使用FragmentActivity的类。这对大多数情况都很好,但是扩展ListActivity或MapActivity的类呢?处理这个问题的首选方法是什么?我希望有一个ListFragmentActivity或类似的东西,但我没有看到。
答案 0 :(得分:12)
这是我在将ListActivity转换为片段API时所做的事情:
将lv = getListView();
替换为lv = (ListView) findViewById(android.R.id.list);
将setListAdapter(adapter);
替换为lv.setAdapter(adapter);
如果您覆盖onListItemClick()
,请将其替换为lv.setOnItemClickListener(new ListView.OnItemClickListener() {...
您必须手动设置空视图(显示没有结果的时候):lv.setEmptyView(findViewById(android.R.id.empty));
如果我正在使用CursorLoader,我通常把它放在onLoadFinished()中:
// if there are no results
if (data.getCount() == 0) {
// let the user know
lv.setEmptyView(findViewById(android.R.id.empty));
} else {
// otherwise clear it, so it won't flash in between cursor loads
lv.setEmptyView(null);
}
说到cursor loaders,我还会将活动转换为使用CursorLoader,如果它还没有到那时那么
答案 1 :(得分:8)
至少对于ListActivity,您可以将其更改为FragmentActivity(仍在实现OnItemCLickListener)并替换:
lv = getListView()到lv =(ListView)findViewById(R.id.your_list_view_id)
和
setListAdapter(favAdapter)到lv.setAdapter(adapter)
答案 2 :(得分:5)
有一个ListFragment:http://developer.android.com/reference/android/app/ListFragment.html
对于MapActivity,遗憾的是你需要继续使用它;它没有Fragment API。
答案 3 :(得分:0)
可以将ListActivity
转换为FragmentActivity
。
FragmentActivity
而不是ListActivity
res/layout/your_activity.xml
ListView
创建android:id="@+id/your_activity_list_view"
onCreate
,setContentView(R.layout.your_activity);
onCreate
以明确检索您刚刚充气的ListView
ListView lv = (ListView) findViewById(R.id.your_activity_list_view);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);