应用程序崩溃:尝试在空对象引用上调用虚拟方法

问题描述 投票:0回答:1

我正在开发一个向用户显示状态栏通知的应用。用户可以通过2个开关打开和关闭通知和通知声音。我运行该应用程序,并尝试打开通知,然后它崩溃了。堆栈跟踪在第60行说(我标记了它,以便您可以轻松找到它):尝试在空对象引用上调用虚拟方法'void android.app.NotificationManager.notify(int,android.app.Notification)'

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;




                }}






    });}});}}
java android notifications switch-statement
1个回答
0
投票

您崩溃的原因是因为您没有初始化manager属性。您可以像这样使用manager之前完成此操作:

manager = getSystemService(Context.NOTIFICATION_SERVICE)
© www.soinside.com 2019 - 2024. All rights reserved.