NullPointerException при запуске ListActivity - PullRequest
0 голосов
/ 01 апреля 2011

Я часами работаю над ошибкой, которую я получаю, когда хочу запустить ListActivity.Короткое решение о том, что я хочу сделать: у меня есть основное приложение с обычным меню, из которого я хочу запустить список настроек, где пользователь может добавлять определенные настройки.

Я пытаюсь запустить ListViewкак это:

startActivity(new Intent(this, FileManagerSettings.class));

Затем в методе создания я получил ошибку:

        userSettings = deserializeObject();

    if(userSettings.isEmpty())
    {
        userSettings.add(new SettingItem("Camera", android.os.Environment.DIRECTORY_DCIM, false));
    }
    super.onCreate(icicle);
    Context mContext = this.getApplicationContext(); 
    settingsList = (ListView)findViewById(R.id.list_settings);
    settingsList.setAdapter(new CustomSettingsAdapter(mContext, userSettings));

Последняя строка вызывает ошибку.Для лучшего понимания здесь конструктор класса адаптера:

     public CustomSettingsAdapter(Context context, ArrayList<SettingItem> sitems)
 {
     settingsArrayList = sitems;
     mInflater = LayoutInflater.from(context);
 }

А вот ошибка от logcat: (Извините, не знаю, как правильно отформатировать)

04-01 11: 07: 26.756: ОШИБКА / AndroidRuntime (375): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: главная 04-01 11: 07: 26.756: ОШИБКА / AndroidRuntime (375): java.lang.RuntimeException: Невозможно запустить действие ComponentInfo {org.openintents.filemanager / org.openintents.filemanager.FileManagerSettings}: java.lang.NullPointerException 04-01 11: 07: 26.756: ОШИБКА / AndroidRuntime (375): вызвано: java.lang.NullPointerException 04-01 11:07:26.756: ОШИБКА / AndroidRuntime (375): at org.openintents.filemanager.FileManagerSettings.onCreate (FileManagerSettings.java:43)

В моем представлении ошибка вызвана тем, что LayoutInflater контекста равен нулю... Но я не знаю, как получить LayoutInflater тогда и даже не знаю, действительно ли это ошибка ...

edit: журнал ошибок с использованием setContentView ():

04-01 12:06: 56.315: ОШИБКА / AndroidRuntime (669): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной.openintents.filemanager.FileManagerSettings}: java.lang.RuntimeException: у вашего контента должен быть ListView с атрибутом id, равным 'android.R.id.list'

, это xml-файл:

<LinearLayout android:layout_width="fill_parent"
    android:id="@+id/list"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView android:id="@+id/settings_list_title"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:text="@string/settings_header"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:gravity="center" />
    <ListView android:id="@+id/list"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    </LinearLayout>

1 Ответ

1 голос
/ 01 апреля 2011

findViewById () возвращает действительную ссылку на View только в том случае, если был задан макет Activty.Если посмотреть на код, который вы вставили в свой вопрос, то не похоже, что вы звоните на

setContentView(R.layout.whatever_your_layout_file_id);

Ваша переменная settingsList будет пустой ссылкой

...