Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OnSharedPreferenceChangeListener未被调用_Android - Fatal编程技术网

Android OnSharedPreferenceChangeListener未被调用

Android OnSharedPreferenceChangeListener未被调用,android,Android,我创建了一个PreferenceActivity,并实现了它 通过对首选项使用首选项屏幕,不会调用 为什么未调用OnSharedPreferenceChangeListener() MyPreferenceActivity.java package com.example.sms_reader; import android.content.Intent; import android.content.SharedPreferences; import android.content.Shar

我创建了一个
PreferenceActivity
,并实现了它

通过对
首选项使用
首选项屏幕
,不会调用

为什么未调用OnSharedPreferenceChangeListener()

MyPreferenceActivity.java

package com.example.sms_reader;

import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;


public class MyPreferenceActivity 
         extends PreferenceActivity implements OnSharedPreferenceChangeListener {
  SharedPreferences prefs;
  MyPreferenceActivity listener;

  @SuppressWarnings("deprecation")
  @Override
  public void onCreate(Bundle savedInstanceState)  {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs.registerOnSharedPreferenceChangeListener(this);
  }


  @Override
  public void onSharedPreferenceChanged(SharedPreferences preferences,
                                        String key) {
    if(key == "RESET") {  
      Toast.makeText(getApplicationContext(), 
                     "RESET Values changed", Toast.LENGTH_LONG).show();
      Log.d("on shared preference gets a call","on shared preference gets a call" ); 
      Boolean b = preferences.getBoolean("reset", false);
      Log.d("reset value", String.valueOf(b)); 

      if (b == true) {
        Toast.makeText(getApplicationContext(), 
                     "RESET Values changed", Toast.LENGTH_LONG).show();

        preferences.edit().clear().commit();
        PreferenceManager.setDefaultValues(getApplicationContext(), R.xml.preferences, true);
        Intent intent = getIntent();
        overridePendingTransition(0, 0);
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        finish();
        overridePendingTransition(0, 0);
        startActivity(intent);               
      }
    }
  }
}

条件更改为如下所示:

if (key.equals("RESET")) {

如果它仍然不工作,那么在它上面放一个断点(或者在它前面放一条日志消息),看看执行是否真的通过了那里。

你确定它没有被调用,或者只是没有找到“重置”键?