【问题标题】:Android ListView With Fragment View Not Created未创建片段视图的 Android ListView
【发布时间】:2014-08-20 22:53:40
【问题描述】:

我在片段中使用 ListView,并且按照 Android 的说明设置了所有必要的要求,下面是我的 XML 列表代码

    <?xml version="1.0" encoding="utf-8"?>
<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="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:background="#253453">
    </ListView>

</LinearLayout>

在我的代码中

   @Override
public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View android = inflater.inflate(R.layout.pending_frag, container, false);
    context = getActivity().getApplicationContext();
    //ListView list = (ListView)android.findViewById(R.id.list);
    ListView list = getListView();

      trackItems = new ArrayList<TrackItem>();
      listAdapter = new TrackOrderListAdapter(getActivity(), trackItems);
      list.setAdapter(listAdapter); }

但是,我仍然收到此错误

08-20 23:26:26.053: E/AndroidRuntime(30334): 致命异常: main 08-20 23:26:26.053: E/AndroidRuntime(30334): 进程: com.deliveryscience.track, PID: 30334 08-20 23:26:26.053: E/AndroidRuntime(30334): java.lang.IllegalStateException: 内容视图 尚未创建 08-20 23:26:26.053: E/AndroidRuntime(30334): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.ListFragment.getListView(ListFragment.java:222) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 com.deliveryscience.track.PendingActivity.onCreateView(PendingActivity.java:51) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.Fragment.performCreateView(Fragment.java:1504) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:482) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:163) 08-20 23:26:26.053: E/AndroidRuntime(30334): 在 android.support.v4.view.ViewPager.populate(ViewPager.java:1073) 08-20 23:26:26.053:E/AndroidRuntime(30334):在 android.support.v4.view.ViewPager.populate(ViewPager.java:919) 08-20 23:26:26.053:E/AndroidRuntime(30334):在 android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)

【问题讨论】:

  • 张贴你的整个pending_fragxml

标签: android android-fragments android-listview


【解决方案1】:
 @Override
public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    return inflater.inflate(R.layout.pending_frag, container, false);

}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onViewCreated(view, savedInstanceState);
    context = getActivity().getApplicationContext();
    //ListView list = (ListView)android.findViewById(R.id.list);
    ListView list = getListView();

    trackItems = new ArrayList<TrackItem>();
    listAdapter = new TrackOrderListAdapter(getActivity(), trackItems);
    list.setAdapter(listAdapter); 
}

在创建视图之前,您无法真正操作视图。

【讨论】:

  • 我也这么想@CChi,在看到你的代码后我知道我做错了。无论如何谢谢
猜你喜欢
  • 2016-09-07
  • 2018-09-27
  • 2014-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多