Вызванное: java.lang.NullPointerException: попытка вызвать виртуальный метод 'void … по ссылке нулевого объекта

Я просматриваю какой-то вопрос здесь в переполнении стека, но это не решило мою проблему.

Вот мой код.

public class MenuListActivity extends ListActivity { String MenuNames[] = {"Consultation", "Medicine", "Diseases", "Doctor"}; protected void onCreateView(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu_list); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MenuNames); final ListView lv = (ListView) findViewById(R.id.listView1); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { if(position == 1) { //code specific to first list item Intent myIntent = new Intent(v.getContext(), ConsultationActivity.class); startActivity(myIntent); } } } ); } 

Logcat.

  10-12 10:53:37.572: E/AndroidRuntime(10605): FATAL EXCEPTION: main 10-12 10:53:37.572: E/AndroidRuntime(10605): Process: com.capstone.medicinehealthguide, PID: 10605 10-12 10:53:37.572: E/AndroidRuntime(10605): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.capstone.medicinehealthguide/com.capstone.medicinehealthguide.MenuListActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2255) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2317) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread.access$800(ActivityThread.java:143) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.os.Handler.dispatchMessage(Handler.java:102) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.os.Looper.loop(Looper.java:135) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread.main(ActivityThread.java:5070) 10-12 10:53:37.572: E/AndroidRuntime(10605): at java.lang.reflect.Method.invoke(Native Method) 10-12 10:53:37.572: E/AndroidRuntime(10605): at java.lang.reflect.Method.invoke(Method.java:372) 10-12 10:53:37.572: E/AndroidRuntime(10605): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:836) 10-12 10:53:37.572: E/AndroidRuntime(10605): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:631) 10-12 10:53:37.572: E/AndroidRuntime(10605): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference 10-12 10:53:37.572: E/AndroidRuntime(10605): at com.capstone.medicinehealthguide.MenuListActivity.onCreate(MenuListActivity.java:24) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.Activity.performCreate(Activity.java:5720) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1102) 10-12 10:53:37.572: E/AndroidRuntime(10605): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2208) 10-12 10:53:37.572: E/AndroidRuntime(10605): ... 10 more 

XML-файл

  <RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.capstone.medicinehealthguide.MenuListActivity" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> 

Я пытаюсь создать приложение, имеющее список, и когда вы нажмете на него, будут открыты другие действия

Вы на самом деле используете это неправильно:

 final ListView lv = (ListView) getListView().findViewById(R.id.listView1); 

Вот:

 final ListView lv = (ListView) findViewById(R.id.listView1); 

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

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

Перед findByViewId представление должно быть завышено. Что вам нужно сделать, это переместить этот код из метода onCreate метод onCreateView. В методе onCreateView установите его ниже setContentView() .

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, MenuNames); final ListView lv = (ListView) getListView().findViewById(R.id.listView1); lv.setAdapter(adapter); lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { if(position == 1) { //code specific to first list item Intent myIntent = new Intent(v.getContext(), ConsultationActivity.class); startActivity(myIntent); } }