编辑:
我正在构建一个基于简单计数器原理的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。 这两个问题都有解决办法吗?
答案 0 :(得分:0)
1。使用sharedpreferences在关闭后重新启动应用时保存或检索计数的值
2。当我更改模拟器的方向(即从纵向到横向,反之亦然)时,请将handle orientation change in android 计数设置为0
答案 1 :(得分:0)
您应该使用SharedPreferences来保存变量,并覆盖OnConfigurationChange,因为它可能会调用您的oncreate方法(不要忘记在清单中添加android:configChanges="orientation|keyboardHidden|screenSize"
)
我希望这会对你有帮助。
答案 2 :(得分:0)
试试这些......
android:configChanges="orientation"
,这会阻止您的活动在方向更改时再次重新启动。
使用Bundle,但仅限于少量数据。需要序列化和反序列化。
您还可以使用onRetainNonConfigurationInstance()
和getLastNonConfigurationInstance()
来存储和检索数据。
有关详细信息,请参阅此链接:
http://developer.android.com/guide/topics/resources/runtime-changes.html