【发布时间】: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