2011-03-03 57 views
0

我的應用程序運行良好,直到我下面的代碼添加到選項菜單添加到我的主要活動:RuntimeException的與Android OptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.wantlist_menu, menu); 
     return true; 
} 

菜單資源如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:enabled="true" android:visible="true" android:id="@+id/clearImageCashe" android:title="@string/clearImageCache"></item> 
</menu> 

一切正在編譯,但我得到以下NullpointerException:

03-03 19:11:09.001: ERROR/AndroidRuntime(341): java.lang.RuntimeException: Unable to start activity  ComponentInfo{de.kosmowski.discogs.wants/de.kosmowski.discogs.wants.activities.wantlist}:  java.lang.NullPointerException 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.os.Looper.loop(Looper.java:123) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at dalvik.system.NativeStart.main(Native Method) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341): Caused by: java.lang.NullPointerException 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at de.kosmowski.discogs.wants.activities.wantlist.onCreate(wantlist.java:49) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  ... 11 more 

它說會有b E中的空指針異常在

Caused by: java.lang.NullPointerException 
03-03 19:11:09.001: ERROR/AndroidRuntime(341):  at de.kosmowski.discogs.wants.activities.wantlist.onCreate(wantlist.java:49) 

但在這行代碼只是工作罰款之前,如果我註釋掉,出現在下面的一些行同樣的錯誤。這對我來說毫無意義。

我只是不知道這裏發生了什麼。

最後但並非最不重要的完整活動類(不含進口):

public class wantlist extends Activity implements OnClickListener { 
/** Called when the activity is first created. */ 

ArrayList<Want> wants = new ArrayList<Want>(); 

@Override 
public void onCreate(Bundle savedInstanceState) {   

    wants.add(new Want("Want1")); 
    wants.add(new Want("Want2")); 
    wants.add(new Want("Want3")); 
    wants.add(new Want("Want4")); 
    wants.add(new Want("Want5")); 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    ListView lv = (ListView) findViewById(R.id.WantList); 
    ImageButton b = (ImageButton) findViewById(R.id.searchbutton); 
    b.setOnClickListener(this); //NullPointerException here 


    lv.setAdapter(new WantAdapter(this, 
      R.layout.lplistitem, wants)); 
    lv.setTextFilterEnabled(true); 

} 

public void onClick(View v) { 
    onSearchRequested(); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.wantlist_menu, menu); 
     return true; 
} 

}

只是可以肯定這裏的main.xml中提前

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<RelativeLayout 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
> 
<ImageButton android:gravity="right" android:layout_alignParentRight="true" android:src="@drawable/searchbutton" android:text="@string/search" android:id="@+id/searchbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible"></ImageButton> 
</RelativeLayout> 

<ListView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/WantList"></ListView> 
</LinearLayout> 

感謝。

+0

什麼是第49行? – 2011-03-03 18:29:53

+0

我用「// NullPointerException here」標記了它的b.setOnClickListener(this)行。當我評論這條線。異常將在下一行代碼等等...我不認爲這是真的與這條線有關。 – Chris 2011-03-03 18:34:44

回答

0

刪除類R.java並讓Eclipse重新生成它解決了它!

我想因爲任何原因,R.java對某些id感到困惑。

0

在main.xml中是否存在編號searchbutton

如果在佈局中找不到ID,則會返回空指針。如果該編號存在於另一個佈局文件中,編譯器將不會捕獲該文件。

+0

是的。我將main.xml添加到問題中。 – Chris 2011-03-03 18:41:37

+0

如何在onCreate()中設置斷點並逐步找出哪一行實際上導致了問題? – 2011-03-03 19:59:31

相關問題