Java 应用程序崩溃:尝试对空对象引用调用虚拟方法
我正在开发一个向用户显示状态栏通知的应用程序。用户可以通过2个开关打开和关闭通知和通知声音。我运行应用程序并试图打开通知,但它崩溃了。堆栈跟踪显示在第60行(我标记了它以便您可以轻松找到它): 尝试对空对象引用调用虚拟方法“void android.app.NotificationManager.notify(int,android.app.Notification)”Java 应用程序崩溃:尝试对空对象引用调用虚拟方法,java,android,notifications,switch-statement,Java,Android,Notifications,Switch Statement,我正在开发一个向用户显示状态栏通知的应用程序。用户可以通过2个开关打开和关闭通知和通知声音。我运行应用程序并试图打开通知,但它崩溃了。堆栈跟踪显示在第60行(我标记了它以便您可以轻松找到它): 尝试对空对象引用调用虚拟方法“void android.app.NotificationManager.notify(int,android.app.Notification)” 发生崩溃的原因是您没有初始化管理器属性。在使用manager之前,您可以这样做: manager=getSystemServi
发生崩溃的原因是您没有初始化
管理器
属性。在使用manager
之前,您可以这样做:
manager=getSystemService(Context.NOTIFICATION\u服务)
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.Switch;
import androidx.annotation.RequiresApi;
import static android.app.PendingIntent.getActivity;
import static android.content.Context.NOTIFICATION_SERVICE;
public class Settings extends AppCompatActivity {
Switch simpleswitch1;
Switch simpleswitch2;
private Notification notification;
NotificationManager manager;
Notification myNotication;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
simpleswitch1 = (Switch) findViewById(R.id.simpleswitch1);
simpleswitch2 = (Switch) findViewById(R.id.simpleswitch2);
simpleswitch1.setChecked(false);
simpleswitch2.setChecked(false);
simpleswitch1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){{
Intent intent = new Intent("com.rj.notitfications.SECACTIVITY");
PendingIntent pendingIntent = PendingIntent.getActivity(Settings.this, 1, intent, 0);
Notification.Builder builder = new Notification.Builder(Settings.this);
builder.setAutoCancel(false);
builder.setTicker("this is ticker text");
builder.setContentTitle("WhatsApp Notification");
builder.setContentText("You have a new message");
builder.setSmallIcon(R.drawable.notification);
builder.setContentIntent(pendingIntent);
builder.setOngoing(true);
builder.setSubText("This is subtext...");
builder.setNumber(100);
builder.build();
myNotication = builder.getNotification();
manager.notify(11, myNotication);//THE ERROR LED HERE
}
}
simpleswitch2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
notification.defaults |= Notification.DEFAULT_SOUND;
}}
});}});}}