Nougat设备崩溃,Marshmallow没有 - 在MenuItem上NullPointerException

时间:2017-07-14 14:59:07

标签: android nullpointerexception android-7.0-nougat

我一直在使用Marshmallow 6.0手机开发应用程序。今天,我用Nougat 7.0手机运行它,一切都很好。在LinearLayout中将一行xml代码('selectableItemBackground')更改为'selectableItemBackgroundBorderless'并在不相关的MenuItem上获得NPE(“尝试调用接口方法'android.view.MenuItem android.view.MenuItem.setIcon(int)'在null对象引用“)这里:

public void updateSpeakerIcon() {
        if (mIsSpeakerOn) {
            mSpeakerIcon.setIcon(R.drawable.speaker);
            setVolumeControlStream(AudioManager.STREAM_MUSIC);
        } else {
            mSpeakerIcon.setIcon(R.drawable.earphone);
            setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
        }
    }

我正在使用ViewPager;此方法在包含它的活动中声明;片段在onResume回调中调用此方法。

mCpeakerIcon在onCreateOptionsMenu回调中'找到',在同一个活动中:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.qmenu, menu);
        mSpeakerIcon = menu.findItem(R.id.toggle_speaker);
        return true;
    }

我已经将一行改回原来的状态,但当然,它没有解决问题。再次在6.0设备中运行应用程序并且没有错误。

有什么想法吗?提前谢谢!

0 个答案:

没有答案