切换活动但保留我的变量

时间:2016-03-28 22:43:21

标签: java android variables android-activity

我是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);
}

2 个答案:

答案 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

你不这样做!将数据保存到本地存储(SharedPreferences =将数据存储到HD),只要您不必执行此操作(配置即使在关闭应用程序后也必须存储),就像您不将数据存储到您的您的桌面应用程序中的高清硬盘,只要它不是您真正需要的。