【问题标题】:Multiple Custom ListFragment in view pager视图寻呼机中的多个自定义 ListFragment
【发布时间】:2014-11-16 21:42:59
【问题描述】:

我有一个 viewPager,其中包含 3 个具有相关布局的不同片段(fragment_new_quiz、fragment_completed_quiz、fragment_created_quiz。每个片段都以类似的方式实现 onCreateView:

public class NewQuizFragment extends ListFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)     {
     super.onCreateView(inflater, container, savedInstanceState);
     View rootView = inflater.inflate(R.layout.fragment_new_quiz, container, false);
     mListView = (ListView) getActivity().findViewById(R.id.list);
     mArrayAdapter = new QuizAdapter(mItemList, getActivity());
     mArrayAdapter.setNotifyOnChange(true);
     setListAdapter(mArrayAdapter);
     return rootView;
  }
}

布局应该都不同,所以我不能重复使用它们。它们的定义类似于:

<?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:background="#fa6a6a"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/createButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Create" />

        <TextView
            android:id="@+id/intro_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:layout_weight="1"
            android:text="Created Quiz"
            android:textAppearance="?android:attr/textAppearanceMedium" />

    </LinearLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="299dp" >

        <ListView
            android:id="@+id/android:list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:drawSelectorOnTop="false" />

        <TextView
            android:id="@+id/android:empty"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="No items."
            android:textAppearance="?android:attr/textAppearanceMedium" />

    </FrameLayout>

</LinearLayout>

我面临的问题是这个代码配置,eclipse给了我错误:

列表无法解析或不是字段

与这条线有关

mListView = (ListView) getActivity().findViewById(R.id.list);

但是,如果我将 3 个列表视图 ID 中的 any 更改为 3 个片段中的任何一个中的其他内容,则不会出现编译时错误。但是,当我运行代码时,出现以下错误:

11-16 16:32:52.533: E/AndroidRuntime(20935): java.lang.RuntimeException: 你的内容必须有一个 ID 的 ListView 属性是'android.R.id.list'。

我有点不知道该怎么做。我对各种组件的使用不合适吗?

【问题讨论】:

    标签: android listview android-fragments android-listview android-viewpager


    【解决方案1】:

    在您的 XML 中,更改这些

    android:id="@+id/android:list"
    android:id="@+id/android:empty"
    

    对这些:

    android:id="@android:id/list"
    android:id="@android:id/empty"
    

    在你的片段中,改变

    mListView = (ListView) getActivity().findViewById(R.id.list);
    

    mListView = (ListView) rootView.findViewById(android.R.id.list);
    

    这些是引用在 android 命名空间中声明的资源 id 的正确方法。

    【讨论】:

    • 酷!学到了一些新东西。那解决了它。当我可以的时候我会接受答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多