我是Android开发的新手。我正在为我玩的纸牌游戏制作一个基本的跟踪应用程序。我需要两个活动来跟踪2组不同的变量。我的问题是无论我做什么,变量都会自行重置。我只需要在切换活动时存储变量,或者只是暂停和恢复活动。这是切换我的活动的代码。如何在不停止两个活动中的变量的情况下,不断地在2之间切换。
主要活动中的方法是第一个......
public void showPWActivity(){
Intent myIntent = new Intent(this, Planeswalker.class);
startActivity(myIntent);
}
第二项活动的方法
public void showMainActivity() {
Intent myIntent = new Intent(this, MainActivity.class);
startActivity(myIntent);
}
答案 0 :(得分:1)
要在使用SharedPreferences暂停活动之前保存变量的状态:
// Access the default SharedPreferences
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);
// The SharedPreferences editor - must use commit() to submit changes
SharedPreferences.Editor editor = preferences.edit();
// Edit the saved preferences
editor.putString("Name", "Tom");
editor.putInt("Age", 31);
editor.commit();
恢复活动时获取变量的状态:
SharedPreferences preferences =
PreferenceManager.getDefaultSharedPreferences(this);
String Name = preferences.getString("Name","Default");
在活动之间传递数据:
在您当前的活动中,创建一个新的Intent:
Intent i = new Intent(getApplicationContext(), NewActivity.class);
i.putExtra("new_variable_name","value");
startActivity(i);
然后在新的Activity中,检索这些值。这里我们检索一个String
Bundle extras = getIntent().getExtras();
if (extras != null) {
String value = extras.getString("new_variable_name");
}
使用此技术将变量从一个Activity传递到另一个Activity。
答案 1 :(得分:-1)
有多种方法可以实现这一目标。最简单的是覆盖onRestoreInstanceState和onSaveInstanceState
看这里 http://www.101apps.co.za/index.php/articles/saving-the-activity-s-instance-state-a-tutorial.html
和 http://developer.android.com/intl/es/training/basics/activity-lifecycle/recreating.html
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Log.i(TAG, "onSaveInstanceState");
final EditText textBox =
(EditText) findViewById(R.id.editText1);
CharSequence userText = textBox.getText();
outState.putCharSequence("savedText", userText);
}
protected void onRestoreInstanceState(Bundle savedState) {
Log.i(TAG, "onRestoreInstanceState");
final EditText textBox =
(EditText) findViewById(R.id.editText1);
CharSequence userText =
savedState.getCharSequence("savedText");
textBox.setText(userText);
}
对于更复杂的事情,考虑在后台制作服务将保存您的应用程序所需的所有数据。
你不这样做!将数据保存到本地存储(SharedPreferences =将数据存储到HD),只要您不必执行此操作(配置即使在关闭应用程序后也必须存储),就像您不将数据存储到您的您的桌面应用程序中的高清硬盘,只要它不是您真正需要的。在暂停使用活动之前保存变量的状态 SharedPreferences