保存Java / Android中的Variable值

时间:2012-06-28 12:02:59

标签: java android

  

可能重复:
  Making data persistent in 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;

}}

我想保存计数的值,以便在关闭后我的应用重新启动时,应该在关闭应用之前使用计数的值。 此外,当我更改模拟器的方向时,即从纵向横向,反之亦然计数设置为0。 这两个问题都有解决办法吗?

3 个答案:

答案 0 :(得分:0)

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

2。当我更改模拟器的方向(即从纵向到横向,反之亦然)时,请将handle orientation change in android 计数设置为0

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这些......

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

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

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

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

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