0

我有一个文本视图。首次创建 Activity 时,textView 的值是“”,什么都没有。但是用户可以启动一些可以使 text="st" 的操作。这很好用,再一次很好用。问题是当我离开页面并返回而不是 text="st" 时,它是 " " 什么都没有。所以用户不得不浪费时间通过一些动作让textView回到“st”。

我尝试使用 SavePreferences 保存 TextView 但由于 TextView 的值在 Activity 启动时什么都没有,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;                                                                             

 }});
4

1 回答 1

3

您究竟在什么时候调用 LoadPreferences/SavePreferences?

仅当用户离开活动时才应进行保存,因此必须重写 onPause() 以调用 savePreference()。加载应该在 onStart() 中完成。

于 2013-06-26T12:23:58.163 回答