Android 将活动更改为AppCompatActivity时出现NullPointerException

Android 将活动更改为AppCompatActivity时出现NullPointerException,android,nullpointerexception,android-support-library,oncreateoptionsmenu,Android,Nullpointerexception,Android Support Library,Oncreateoptionsmenu,我把我的班级从活动改为活动 并将item.getActionView()更改为MenuItemCompat.getActionView(item) 现在我在下面的代码中得到NPE public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.messages, menu); MenuItem item = menu.findItem(R.id.menuTxtSize);

我把我的班级从活动改为活动

并将
item.getActionView()
更改为
MenuItemCompat.getActionView(item)

现在我在下面的代码中得到NPE

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.messages, menu);

    MenuItem item = menu.findItem(R.id.menuTxtSize);
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item);
    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    int index = sp.getInt(getString(R.string.pr_text_size),
            Integer.parseInt(getString(R.string.pr_default_text_size)));
    spinner.setSelection(index);


E/ACRA: ACRA caught a NullPointerException for com.alex.documentation java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setSelection(int)' on a null object reference at com.alex.message.activities.MessagesActivity

如何修复错误?

您必须使用
app:actionViewClass
,而不是
android:actionViewClass
当使用
AppCompatActivity
时,请包括堆栈跟踪和NPE将发生的实际行。@Kiskae我在question@Rotwang将其删除为标记为副本。你提到了一个简单的问题,有人问什么是NPE。这不是一般的NPE问题。@JonTinsman所有NPE都是同一个老故事。。。如果你知道NPE是什么,你也知道如何移除它。@Rotwang我不知道是谁让你处于领先地位,但不是所有的NPE例外都是一样的。如果编写代码的人正在修改他们创建的对象,那么是的,这是一个简单的NPE;然而,OP有工作代码,当他们试图转换为AppCompatActivity时,代码不再工作,它抛出了一个NPE。正如您从接受的答案中所看到的,这不是一个简单的“什么是NPE”,而是与需要修改的AndroidManifest.xml文件有关。是的,您是对的。
app:***
android:*********
之间有什么区别?
android:
由系统提供,而
app:
由您的应用程序及其包含的库提供。有关更多详细信息,请参阅。非常感谢。当我将两个项目合并在一起时,我遇到了一些问题(两个团队成员在不同的回购协议中启动了相同的应用程序)。一个是活动,另一个是具有搜索操作栏的AppCompatActivity。