【问题标题】:content must have a ListView whose id attribute is 'android.R.id.list' [duplicate]内容必须有一个 ID 属性为“android.R.id.list”的 ListView [重复]
【发布时间】:2014-02-13 10:37:16
【问题描述】:
02-13 05:29:12.454: E/AndroidRuntime(1374): FATAL EXCEPTION: main
02-13 05:29:12.454: E/AndroidRuntime(1374): Process: net.multiplesystem.nosms, PID: 1374
02-13 05:29:12.454: E/AndroidRuntime(1374): java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.ListFragment.ensureList(ListFragment.java:344)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.ListFragment.onViewCreated(ListFragment.java:145)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:941)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:472)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.view.ViewPager.populate(ViewPager.java:1068)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.view.ViewPager.populate(ViewPager.java:914)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.View.measure(View.java:16458)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.View.measure(View.java:16458)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:327)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.View.measure(View.java:16458)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2289)
02-13 05:29:12.454: E/AndroidRuntime(1374):     at android.view.View.measure(View.java:16458)

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="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

JAVA

public class UserDetails extends ListFragment  {
    ArrayAdapter<String> adapter;
    ArrayList<String> userIndex = new ArrayList<String>();
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View android = inflater.inflate(R.layout.users_tab, container, false);   
        adapter = new ArrayAdapter<String>(inflater.getContext(),R.layout.single_user_chat_tab,userIndex);
        setListAdapter(adapter);
        return android;
    }
}

当我执行程序时,它会显示运行时异常。但是我已经准备好了带有 ID 列表的列表视图。我不知道为什么它显示异常。请朋友指导我为什么会抛出异常。我已经尝试了所有解决方案,但仍然遇到同样的问题。

【问题讨论】:

  • 也发布您的ListFragment
  • 您是否尝试清理并重建项目?
  • 发布您的代码和 XML
  • 是的,我尝试了所有的替代方法。
  • users_tab.xml是你粘贴在这里的布局吗?

标签: android listview exception android-listview


【解决方案1】:

我认为您不能在 onCreateView 中返回您的自定义视图之前调用 setListAdapter。我看到了 3 个解决方案

  1. 要么调用 super.onCreateView() 而不是膨胀
  2. 在 OnActivityCreated 中设置您的适配器
  3. 要么写android.findViewById(android.R.id.list).setAdapter(adapter);而是

【讨论】:

  • 即使我删除了适配器仍然显示相同的异常。
  • 那么解决问题的简单方法:只实现简单的Fragment,列表Fragment并没有带来真正的方便。
【解决方案2】:
 <ListView
        android:id="@id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />  

【讨论】:

  • 不工作。我的活动类扩展了 ListFragment。
  • @AndroidLearner 立即查看,来源:developer.android.com/reference/android/app/ListFragment.html
  • 在使用ListActivity或ListFragment时,我们的布局xml中必须有一个id为=@id/android:list的ListView。由于 ListActivity 和 ListFragment 在内部使用这个 id 来创建一个列表,这是由 getListView() 引用或返回的列表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多