Android:关闭应用程序时保存实例状态[重复]
Posted
技术标签:
【中文标题】Android:关闭应用程序时保存实例状态[重复]【英文标题】:Android: Save an instance state when app is closed [duplicate] 【发布时间】:2012-05-24 00:32:23 【问题描述】:可能重复:How do I save an android application's state?
我是 Java 和 Android 的新手,正在构建一些小项目来学习。我制作了一个资金跟踪应用程序,它允许用户输入值并且它只是继续减去它。一切正常,但我希望在应用程序关闭并重新打开时保存或缓存这些值。 阅读时,我发现也许 OnPause 可以解决问题,但仍然不是 100% 理解它。
谁能推荐如何做到这一点以及如何应用于我的代码?
非常感谢您的帮助!!
package ps.age.sl;
import java.text.NumberFormat;
import java.util.Locale;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
public class MoneyTrackerActivity extends Activity
/** Called when the activity is first created. */
ImageButton subtract;
EditText startingmoney,submoney, endmoney, tracker;
Locale currentLocale = Locale.getDefault();
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// startingmoney = (EditText) findViewById (R.id.firstmoney);
// submoney = (EditText) findViewById (R.id.submoney);
// subtract = (ImageButton) findViewById (R.id.subbutton);
// endmoney = (EditText) findViewById (R.id.endtv);
// tracker = (EditText) findViewById (R.id.trackertv);
startingmoney.setText("");
submoney.setText("");
endmoney.setText("");
subtract.setOnClickListener(new View.OnClickListener()
double currentValue=0;
double startValue=0;
public void onClick(View v) throws NumberFormatException
if (v == subtract)
NumberFormat currencyFormatter;
currencyFormatter = NumberFormat.getCurrencyInstance(currentLocale);
String totalString;
String x = startingmoney.getText().toString();
String y = submoney.getText().toString ();
double total;
double xm = 0.00;
double ym =0.00;
try
xm = Double.parseDouble(x);
catch(NumberFormatException n)
xm = 0.00;
try
ym = Double.parseDouble(y);
catch(NumberFormatException n)
ym = 0.00;
if(startValue!=xm)
startValue=xm;
currentValue=xm;
currentValue = currentValue -ym;
totalString = currencyFormatter.format(currentValue);
endmoney.setText(totalString);
tracker.setText("you have entered " + totalString +"\n" + tracker.getText().toString());
);
【问题讨论】:
【参考方案1】:请使用SharedPreferences
将数据存储在私有应用程序存储中。在 onPause 方法中实现SharedPrefernces
,如下所示:
@Override
protected void onPause()
super.onPause();
// Store values between instances here
SharedPreferences preferences = getSharedPreferences("sharedPrefs", 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("CLASSLABEL", this.getLocalClassName()); // value to store
editor.putString("STRINGLABEL",String1 );
editor.putString("STRINGLABEL1",String2);
// Commit to storage
editor.commit();
【讨论】:
为什么要在 onSaveInstanceState 中使用 SharedPreferences 而不是 Bundle?以上是关于Android:关闭应用程序时保存实例状态[重复]的主要内容,如果未能解决你的问题,请参考以下文章