Ошибка при загрузке ListView

243
21 августа 2018, 02:50

Учусь работать с DrawerLayout. При запуске приложения возникает следующая ошибка

Content has view with id attribute 'android.R.id.list' that is not a ListView class

Все фрагменты у меня фактически схожи, отличаются лишь загружаемыми массивами, поэтому приведу лишь один пример

Фрагмент

import android.os.Bundle;
import android.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;

public class PastaFragment extends ListFragment {

public PastaFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(inflater.getContext(),android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.pasta));
    setListAdapter(adapter);
    return inflater.inflate(R.layout.fragment_pasta, container, false);
}
}

Макет фрагмента

<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.hfad.bitsandpizzas.PastaFragment">
<!-- TODO: Update blank fragment layout -->
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="@string/hello_blank_fragment" />
</FrameLayout>

Вывод

AndroidRuntime: FATAL EXCEPTION: main
Process: com.hfad.bitsandpizzas, PID: 1965
                                             java.lang.RuntimeException: Content has view with id attribute 'android.R.id.list' that is not a ListView class
                                                 at android.app.ListFragment.ensureList(ListFragment.java:402)
                                                 at android.app.ListFragment.onViewCreated(ListFragment.java:203)
                                                 at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
                                                 at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
                                                 at android.app.BackStackRecord.run(BackStackRecord.java:684)
                                                 at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
                                                 at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
                                                 at android.os.Handler.handleCallback(Handler.java:733)
                                                 at android.os.Handler.dispatchMessage(Handler.java:95)
                                                 at android.os.Looper.loop(Looper.java:136)
                                                 at android.app.ActivityThread.main(ActivityThread.java:5017)
                                                 at java.lang.reflect.Method.invokeNative(Native Method)
                                                 at java.lang.reflect.Method.invoke(Method.java:515)
                                                 at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                                                 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                                                 at dalvik.system.NativeStart.main(Native Method)

Обращение к списку в активности

drawerList = findViewById(R.id.drawer);
drawerList.setOnItemClickListener(new DrawerItemClickListener());

Список в макете активности

<ListView
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:id="@+id/drawer"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:background="#ffffff">
    </ListView>

Возможно ещё следует упомянуть что при клике на элемент списка должен загружаться ListFragment. Как исправить ошибку?

Answer 1

Решил проблему заменой метода onCreateView фрагментов на метод onActivityCreated, и стёр упоминания о макете

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // Inflate the layout for this fragment
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.pasta));
    setListAdapter(adapter);
}
READ ALSO
Чтение файла возле JAR

Чтение файла возле JAR

В одном каталоге с jar-файлом лежит properties файл, который нужно прочитатьСейчас открываю файл так

214
Установка NetBeans, пакет не найден

Установка NetBeans, пакет не найден

Не могу установить Netbeans, переменная среда указана, но установка не начинается

196
Как упростить вывод?

Как упростить вывод?

Вывести arrayList в обратном порядке, а затем стереть

244
модификаторы доступа top level classes

модификаторы доступа top level classes

Не нахожу информацию, какие могут использоваться модификаторы доступа для top level classes?

202