0

可能重复:
使数据在 android 中持久化

编辑:

我正在构建一个基于简单计数器原理的 android 应用程序。

public class TasbeehActivity extends Activity {
/** Called when the activity is first created. */
int count;
ImageButton imButton;
TextView display;
static String ref = "Myfile";
static String key = "key";
SharedPreferences myPrefs;
boolean check = false;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    imButton = (ImageButton) findViewById(R.id.bCount);
    display = (TextView) findViewById(R.id.tvDisplay);
     myPrefs = getSharedPreferences(ref, 0);

     if(check){
         String dataReturned = myPrefs.getString(key, "0");
            count = Integer.parseInt(dataReturned);
            display.setText(""+count);
     }

    imButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Random rand = new Random();
            display.setTextColor(Color.rgb(rand.nextInt(255),
                    rand.nextInt(255), rand.nextInt(255)));
            count++;
            display.setText("" + count);
        }
    });

}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();

     String data = display.getText().toString(); SharedPreferences.Editor
     editor = myPrefs.edit(); editor.putString(key, data);
     editor.commit();
     check = true;

}}

我想保存count的值,这样当我的应用程序在关闭后重新启动时,它应该在关闭应用程序之前具有count的值。此外,当我改变模拟器的方向,即从纵向横向或反之亦然时,计数设置为 0。这两个问题有什么解决方案吗?

4

3 回答 3

0

1.使用sharedpreferences在应用程序关闭后重新启动时保存或检索计数值

2.当我改变模拟器的方向,即从纵向到横向或反之亦然时,看到android计数中的句柄方向变化被设置为 0

于 2012-06-28T12:05:50.077 回答
0

您应该使用SharedPreferences来保存您的变量,并覆盖OnConfigurationChange因为它可能正在调用您的 oncreate 方法(不要忘记android:configChanges="orientation|keyboardHidden|screenSize"在您的清单中添加)我希望这会对您有所帮助。

于 2012-06-28T12:11:59.927 回答
0

试试这些......

  1. android:configChanges="orientation", 这将防止您的 Activity 在方向更改时再次重新启动。

  2. 使用 Bundle,但这仅适用于少量数据。将需要序列化和反序列化。

  3. 您还可以使用onRetainNonConfigurationInstance()getLastNonConfigurationInstance()来存储和检索数据。

有关详细信息,请参阅此链接:

http://developer.android.com/guide/topics/resources/runtime-changes.html

于 2012-06-28T12:36:49.760 回答