Android 如何将数据加载到ListFragment?
我试图将一些数据加载到Android 如何将数据加载到ListFragment?,android,android-fragments,android-listview,android-sqlite,android-listfragment,Android,Android Fragments,Android Listview,Android Sqlite,Android Listfragment,我试图将一些数据加载到列表片段中,但出现以下错误: 05-07 00:05:30.533 625-625/com.myapp.android E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 我该怎么办 以下是我的文件,如果它们有帮助的话: MainAct
列表片段中,但出现以下错误:
05-07 00:05:30.533 625-625/com.myapp.android E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
我该怎么办
以下是我的文件,如果它们有帮助的话:
MainActivity.java
public class MainActivity extends FragmentActivity {
private ViewPager viewPager;
private ViewpagerAdapter viewpagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
viewpagerAdapter = new ViewpagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(viewpagerAdapter);
}
}
ListFrag.java
public class ListFrag extends ListFragment {
private DatabaseAdapter databaseAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_listagem, container, false);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
databaseAdapter = new DatabaseAdapter(getActivity());
databaseAdapter.open();
List<Foo> values = databaseAdapter.getAllFoobar();
//ArrayAdapter<Foo> adapter = new ArrayAdapter<Foo>(getActivity(), android.R.layout.simple_list_item_1, values);
//setListAdapter(adapter);
}
}
公共类ListFrag扩展ListFragment{
专用数据库适配器数据库适配器;
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u列表,容器,false);
返回视图;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
databaseAdapter=新的databaseAdapter(getActivity());
databaseAdapter.open();
列表值=databaseAdapter.getAllFoobar();
//ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u list\u item\u 1,值);
//setListAdapter(适配器);
}
}
和fragment.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.myapp.android.ListFrag">
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"></ListView>
</FrameLayout>
提前谢谢
java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
事故日志清楚地说明了这个问题。您需要更改ListView
idListFragment
希望布局将ListView
id设置为@android:id/list
android:id="@android:id/list"
如果查看ListFragment
源代码,它将使用android.R.id.list
id
检查布局中的ListView
。如果视图为空,它将抛出一个RuntimeException
View rawListView = root.findViewById(android.R.id.list);
if (!(rawListView instanceof ListView)) {
if (rawListView == null) {
throw new RuntimeException(
"Your content must have a ListView whose id attribute is " +
"'android.R.id.list'");
}
throw new RuntimeException(
"Content has view with id attribute 'android.R.id.list' "
+ "that is not a ListView class");
}
使用此布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>