Reputation: 69
I wrote this code that works with sharedPreference , in sosbutton I changed sharedPreference ,I want when sharedPreference changed , onsharedpreferencechangelistener fire . I wrote this code but onsharedpreferencechangelistener didn't fire.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SharedPreferences prefs = getSharedPreferences("demopref", Context.MODE_WORLD_READABLE);
final Button sosBtn=(Button) findViewById(R.id.button);
sosBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data = prefs.getString("demostring", "No Value");
SharedPreferences.Editor editor = prefs.edit();
editor.putString("demostring","HI...");
editor.commit();
////////////////////////////////
}
});
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
Toast.makeText(getApplicationContext(),"changed : " + key,Toast.LENGTH_LONG).show();
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
}
}
please help me :( thanks in advance
Upvotes: 1
Views: 1949
Reputation: 69
I solved my problem:
public class MainActivity extends Activity {
SharedPreferences pref;
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
if(key.equals("demopref"))
Toast.makeText(getApplicationContext(),"Hello2---"+key,Toast.LENGTH_LONG).show();
}
};
@SuppressWarnings("deprecation")
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
////////////////////////////////////////
final Button sosBtn = (Button) findViewById(R.id.button);
sosBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences.Editor editor = pref.edit();
editor.putString("demopref","HI"+String.valueOf(i));
i++;
editor.commit();
/////////////////////////////////
}
});
}
@Override
protected void onResume() {
pref.registerOnSharedPreferenceChangeListener(listener);
super.onResume();
}
@Override
protected void onPause() {
pref.unregisterOnSharedPreferenceChangeListener(listener);
super.onPause();
}
}
Upvotes: 1
Reputation: 870
Try this may be help you... your not given reference to your
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
here is my code
public class MainActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final SharedPreferences prefs = getSharedPreferences("demopref", Context.MODE_PRIVATE);
final Button sosBtn=(Button) findViewById(R.id.button);
sosBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data = prefs.getString("demostring", "No Value");
SharedPreferences.Editor editor = prefs.edit();
editor.putString("demostring","HI...");
editor.commit();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(listener);
////////////////////////////////
}
});
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
Toast.makeText(getApplicationContext(),"changed : " + key,Toast.LENGTH_LONG).show();
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);
}
}
Upvotes: 0