这是我的代码:
case PlaybackStateCompat.STATE_ERROR: {
mRadioProgress.setVisibility(View.GONE);
mPlayStopButton.setVisibility(View.VISIBLE);
mPlayStopButton.setImageResource(R.drawable.player_play);
Toast.makeText(MainActivity.this, "Streaming not available", Toast.LENGTH_SHORT).show();
break;
}
这是Crashlytics堆栈跟踪:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.INotificationManager.enqueueToast(java.lang.String, android.app.ITransientNotification, int)' on a null object reference
at android.widget.Toast.show(Toast.java:286)
代码位于MainActivity中,其中包含一个无线电播放器。这是因为用户已经关闭了MainActivity,使上下文无效?我怎样才能防止崩溃?
答案 0 :(得分:1)
当期望回调或在活动被销毁后接收广播时,这是可能的。要处理它,请先isFinishing()
类的Activity
方法检查活动是否存在。
if(!isFinishing()){
Toast.makeText(MainActivity.this, "Streaming not available", Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:1)
您可以检查活动是否存活并按如下方式显示吐司
if(!MainActivity.this.isFinishing()) {
Toast.makeText(MainActivity.this, "Streaming not available", Toast.LENGTH_SHORT).show();
}
答案 2 :(得分:1)
更改
Toast.makeText(MainActivity.this, "Streaming not available", Toast.LENGTH_SHORT).show();
到这个
Toast.makeText(getApplicationContext(), "Streaming not available", Toast.LENGTH_SHORT).show();