代码之家  ›  专栏  ›  技术社区  ›  Jinsuk Oh

android出现错误“试图在空对象引用上调用接口方法”。featFCM

  •  0
  • Jinsuk Oh  · 技术社区  · 8 年前

    我有问题 我想要控制按钮布尔的FCM声音 我的布尔值是保存共享首选项 我做了初始化,但为什么会出现这个错误

    my error image

     private static SharedPreferences mPrefs;
            private static SharedPreferences.Editor mPrefsEditor;
            private static final String noti = "pref_key_noti_onoff";
         public static void initPrefs(Context context) {
                if( mPrefs == null){
                    mPrefs = context.getSharedPreferences(context.getPackageName() + "_preferences", 0);
                    mPrefsEditor = mPrefs.edit();
                 }
            }
            public static boolean getSettingnoti() {
                return mPrefs.getBoolean(noti,true);
            }
      public static void setSettingnoti(boolean onoff) {
            mPrefsEditor = mPrefs.edit();
            mPrefsEditor.putBoolean(noti,onoff);
            mPrefsEditor.commit();
    
        }
    

     public void onMessageReceived(RemoteMessage remoteMessage) {
                if (DataSaver.getSettingnoti()){}
                else{
                    mPrefsEditor = mPrefs.edit();
                    mPrefsEditor.putBoolean(noti,true);
                    mPrefsEditor.commit();
                }
    
                if (DataSaver.getSettingnoti() == false) {
                    Log.d(TAG, "onMessageReceived: ");
                } else {
                    Integer.parseInt(DataSaver.getSettingsttime());
                    Integer.parseInt(DataSaver.getSettingedtime());
    
                    Log.d(TAG, "onMessageReceived:" + Integer.parseInt(DataSaver.getSettingsttime()) + Integer.parseInt(DataSaver.getSettingedtime()));
    
                    sendPushNotification(remoteMessage.getData().get("message"));
                    set_alarm_badge();
                }
            }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Amit Patel    8 年前

    在使用之前,您需要修改此代码并对对象执行null检查。

    public static boolean getSettingnoti() {
                if(mPrefs != null)
                    return mPrefs.getBoolean(noti,true);
                /* put some log here */
                return false;
            }