[英]How to save shared preference data into an ArrayList then display on a ListView?
[英]Display shared preference in textview
我正在嘗試制作一個簡單的計算器應用程序,並希望最終的計算結果在應用程序關閉后不會消失。
我可以獲取用戶輸入的數字以保持原位,並且可以正確計算結果,但是一旦應用關閉,結果就會消失嗎?
任何幫助將非常感激!!
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.calculator);
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
editText3.setText(prefs.getString("autoSave", ""));
editText4.setText(prefs.getString("autoSave1", ""));
editText6.setText(prefs.getString("autoSave2", ""));
editText8.setText(prefs.getString("autoSave3", ""));
editText3.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textViewResult.setText(addNumbers());
}
public void afterTextChanged(Editable s)
{
prefs.edit().putString("autoSave", s.toString()).commit();
}
});
editText4.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textViewResult.setText(addNumbers());
}
public void afterTextChanged(Editable s)
{
prefs.edit().putString("autoSave1", s.toString()).commit();
}
});
editText6.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textViewResult.setText(addNumbers());
}
public void afterTextChanged(Editable s)
{
prefs.edit().putString("autoSave2", s.toString()).commit();
}
});
editText8.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
textViewResult.setText(addNumbers());
}
public void afterTextChanged(Editable s)
{
prefs.edit().putString("autoSave3", s.toString()).commit();
}
});
}
private String addNumbers() {
int number1;
int number2;
int number3;
int number4;
if (editText3.getText().toString() != "" && editText3.getText().length() > 0) {
number1 = Integer.parseInt(editText3.getText().toString());
} else {
number1 = 0;
}
if (editText4.getText().toString() != "" && editText4.getText().length() > 0) {
number2 = Integer.parseInt(editText4.getText().toString());
} else {
number2 = 0;
}
if (editText6.getText().toString() != "" && editText6.getText().length() > 0) {
number3 = Integer.parseInt(editText6.getText().toString());
} else {
number3 = 0;
}
if (editText8.getText().toString() != "" && editText8.getText().length() > 0) {
number4 = Integer.parseInt(editText8.getText().toString());
} else {
number4 = 0;
}
int sum = (number1 * 2) + (number2 * 4) + (number3 * 2) + (number4 * 2);
if (sum > 6) sum = 6;
return sum + "";
} }
您可以將結果保存在將計算結果顯示在文本視圖中的位置,然后保存所保存的內容以及向用戶顯示的內容
如下初始化您的SharedPreference,
SharedPreferences prefs = this.getSharedPreferences(
"com.example.app", Context.MODE_PRIVATE);
嘗試這個,
首先,使用以下命令將result
保存到addNumbers
方法的preferences
中
prefs.edit().putString("result", sum.toString()).commit();
請參閱下面的對addNumbers
方法的更改:
private String addNumbers() {
int number1;
int number2;
int number3;
int number4;
if (editText3.getText().toString() != "" && editText3.getText().length() > 0) {
number1 = Integer.parseInt(editText3.getText().toString());
} else {
number1 = 0;
}
if (editText4.getText().toString() != "" && editText4.getText().length() > 0) {
number2 = Integer.parseInt(editText4.getText().toString());
} else {
number2 = 0;
}
if (editText6.getText().toString() != "" && editText6.getText().length() > 0) {
number3 = Integer.parseInt(editText6.getText().toString());
} else {
number3 = 0;
}
if (editText8.getText().toString() != "" && editText8.getText().length() > 0) {
number4 = Integer.parseInt(editText8.getText().toString());
} else {
number4 = 0;
}
int sum = (number1 * 2) + (number2 * 4) + (number3 * 2) + (number4 * 2);
if (sum > 6) sum = 6;
prefs.edit().putString("result", sum.toString()).commit();
return sum + "";
}
}
result
是您的關鍵。 因此,要獲取已存儲的值,可以將prefs
與相同的鍵一起使用
prefs.getString("result","");
從onCreate
preference
中獲取值,然后將此值設置為TextView
。 請參閱下面的示例代碼
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.calculator);
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
String result= prefs.getString("result",""); //where "" is your default value
if(!result.equals("") && !result.isEmpty()){
textViewResult.setText(addNumbers());
}
/*other code*/
您可以像下面這樣做。
創建一種保存SharedPreferences的方法
private void savePreferences(String key, String value) { SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); Editor edit = sp.edit(); edit.putString(key, value); edit.commit(); }
將值保存到類似
savePreferences("autosave", s.toString());
從SharedPreferences查看數據表單,創建另一個方法,例如
private void loadSavedPreferences() { SharedPreferences sp = PreferenceManager .getDefaultSharedPreferences(this); String autosave = sp.getString("autosave", ""); editText3.setText(autosave); }
調用loadSavedPreferences方法的OnCreate mehtod在活性享受...謝謝...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.