Android选项菜单的运行时异常

Android选项菜单的运行时异常,android,options-menu,runtimeexception,Android,Options Menu,Runtimeexception,我的应用程序运行良好,直到我添加了以下代码,将选项菜单添加到我的主要活动: @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.wantlist_menu, menu); return true; } 菜单资源如下所示: <?xml versi

我的应用程序运行良好,直到我添加了以下代码,将选项菜单添加到我的主要活动:

@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>
它说,将有一个空指针异常

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类wantlist扩展活动实现OnClickListener{
/**在首次创建活动时调用*/
ArrayList=newArrayList();
@凌驾
创建时的公共void(Bundle savedInstanceState){
添加(新需求(“Want1”);
需要。添加(新需要(“Want2”);
添加(新需求(“Want3”);
需要。添加(新需要(“Want4”);
需要。添加(新需要(“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
lv.setAdapter(新的WantAdapter(本、,
R.layout.lplistitem,wants);
lv.setTextFilterEnabled(真);
}
公共void onClick(视图v){
onSearchRequested();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。wantlist_菜单,菜单);
返回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>


提前感谢。

main.xml中是否存在id
searchbutton


如果在布局中找不到id,则返回空指针。如果id存在于另一个布局文件中,编译器将无法捕捉到这一点。

删除类R.java并让Eclipse重新生成它解决了这一问题


我想,不管出于什么原因,R.java对某些ID感到困惑。

我用“//NullPointerException here”标记了它,这是b.setOnClickListener(this)行。当我把这行注释掉的时候。例外情况将出现在下一行代码中,以此类推。。。我不认为这和这条线有什么关系,是的。我在问题中添加了main.xml,那么在onCreate()中设置一个断点并逐步找出哪一行是问题的真正原因呢?
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;
}
<?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>