无法使用TextView的“保存首选项”

时间:2013-06-26 12:03:13

标签: android sharedpreferences savestate

我有一个TextView。首次创建Activity时,textView的值为“”,就像什么都没有。但是用户可以启动一些可以使text =“st”的动作。这工作正常,再一次工作正常。问题是当我离开页面并返回而不是text =“st”时,它就像“没有”一样。因此,用户必须浪费时间并通过某些操作将textView恢复为“st”。

我尝试使用SavePreferences保存TextView,但由于TextView的值在活动启动时没有任何内容,因此SavePreferences完全按照它应该执行的操作并使TextView无效。是不是有一些方法可以保存TextView的值。我的页面上有其他视图我不想保存,那么当用户离开应用程序或活动时,如何保存TextView呢?

TextView s1;
s1 = (TextView)findViewById(R.id.s1);

//9 miles down the page
LoadPreferences();
SavePreferences("MEM46", s1.getText().toString());

LoadPreferences();} 
private void SavePreferences(String key, String value){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key, value);
editor.commit();}

private void LoadPreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
String strSavedMem46 = sharedPreferences.getString("MEM46", "");
s1.setText(strSavedMem46);

lay1.setOnLongClickListener(new OnLongClickListener(){
public boolean onLongClick(View v){

AlertDialog.Builder alert = new AlertDialog.Builder(xxx.this);
alert.setTitle("Help"); //Set Alert dialog title here
alert.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface d, int choice){ 

if(choice == 0) {
d.cancel();
}
else if(choice == 1){
TextView ss1=(TextView)findViewById(R.id.s1);
 ss1.setText("st");d.cancel();                                                                                                           } 
 else if(choice == 2)                                                                   {
 TextView ss1=(TextView)findViewById(R.id.s1);
 ss1.setText("");d.cancel();}});
 alert.show();
 return true;                                                                             

 }});

1 个答案:

答案 0 :(得分:3)

您究竟在何时调用LoadPreferences / SavePreferences?

只有在用户离开活动时才会进行保存,因此必须覆盖onPause()才能调用savePreference()。加载应该在onStart()中完成。