我要清除所有我把我的第一次活動sharedpref並刪除它的第二個活動。但明確的功能無法正常工作。這裏是我的代碼的Android不清除sharedpreference
public class MyActivity extends Activity implements View.OnClickListener {
/**
* Called when the activity is first created.
*/
public static final String PREFS_NAME = "ResumePrefs";
SharedPreferences settings;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
((Button)findViewById(R.id.button)).setOnClickListener(this);
}
@Override
protected void onResume() {
try{
Toast. makeText(this,settings.getString("answer_id",""),Toast.LENGTH_LONG).show();
}catch (Exception e){
Toast.makeText(this,e.toString(),Toast.LENGTH_LONG).show();
}
super.onResume();
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button:
settings = getSharedPreferences(PREFS_NAME, 1);
SharedPreferences.Editor editor = settings.edit();
editor.putString("answer_id", "This is a test");
editor.commit();
Intent intent = new Intent(this,destroyPref.class);
startActivity(intent);
break;
}
}
}
和my2nd activty:
public class destroyPref extends Activity {
public static final String PREFS_NAME = "ResumePrefs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.destroy);
}
@Override
public void onBackPressed() {
SharedPreferences settings = this.getSharedPreferences(PREFS_NAME,1);
settings.edit().clear();
settings.edit().commit();
super.onBackPressed();
}
@Override
protected void onResume() {
SharedPreferences settings = this.getSharedPreferences(PREFS_NAME,1);
settings.edit().clear();
settings.edit().commit();
super.onResume();
}
}
一旦我按了後退按鈕,我會回去的主要活動和預期偏好值被清除,除非我再次按下按鈕。我嘗試了bot後援並恢復,但仍然存在sharedpref值..我錯過了什麼?謝謝。
你確定onBackPressed被調用? – RvdK
你用'settings.edit()。apply()'來代替commit(); ? –
是的,我確信..我剛剛在這裏放了一杯吐司,並按下了後退按鈕。 – thenewbie