【问题标题】:Cant use SavePreferences for TextView无法为 TextView 使用保存首选项
【发布时间】:2013-06-26 12:03:12
【问题描述】:

我有一个 TextView。首次创建 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;                                                                             

 }});

【问题讨论】:

  • 加载和保存首选项是否在同一个活动中?
  • 是的,他们在同一个活动中。
  • 当你打开对话框并且用户决定在那一刻输入字符串 st 时你不要在共享首选项中设置它
  • 当他们按下按钮调用 SaveSharedPreference 时,这是怎么回事?
  • 你为什么不用et.addTextChangedListener(new TextWatcher(){...}??

标签: android sharedpreferences savestate


【解决方案1】:

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

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

【讨论】:

  • 只有在用户离开活动时才应该进行保存...这非常有用。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 2014-12-01
  • 2015-05-03
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多