Android Activity在被另一个Activity调用后不保留变量

时间:2014-10-03 23:23:39

标签: android android-activity

我正在开发一个Quizz应用程序,其中一个活动显示来自SQLite的问题和选项以及选择选项,另一个活动显示结果为2000毫秒(它有一个计时器)然后它通过Intent调用First Activity。

因此,大多数交互是在两个活动之间进行的。但每次调用我的MainActivity时,它会一次又一次地重新初始化所有变量。

我在onCreate()中打开我的数据库连接,并且还保留一个计数器(可以计算已经询问了多少个问题),其值在第二个活动的意图之后没有保留。我很担心如何解决这个问题。

我对所遵循的生命周期感到有些困惑。是否从onCreate()开始调用第二个活动,或者它也是再次初始化实例变量。

这是我写的onCreate()方法:

public class MainActivity extends Activity {

    protected static final int SCORE_INCREMENT = 5;
    TextView question;
    Button score, opt1, opt2, opt3;
    MyDatabaseManager dbManager;
    QuizManager quizManager;
    private int quiz_counter =1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dbManager = new MyDatabaseManager(getApplicationContext());
        dbManager.open();

        quizManager = new QuizManager(MainActivity.this, dbManager);

        Toast.makeText(MainActivity.this, "Asking The First Question", 0).show();

        askQuestion();
    }
    }

上述书面代码与我现在正在编写的代码之间是否存在任何差异...如果通过Intent再次调用该活动

public class MainActivity extends Activity {

    protected static final int SCORE_INCREMENT = 5;
    TextView question;
    Button score, opt1, opt2, opt3;
    MyDatabaseManager dbManager  = new MyDatabaseManager(getApplicationContext());
    QuizManager quizManager  = new QuizManager(this, dbManager);
    private int quiz_counter =1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Toast.makeText(MainActivity.this, "Asking The First Question", 0).show();

        askQuestion();
    }
    }

这可能是一个愚蠢的问题。但这对我来说有点混乱。欢迎提出建议。

1 个答案:

答案 0 :(得分:0)

如果您想要在更改活动之间保留变量,那么您应该

  1. 将它们存储在SharedPreferences
    1. Activites中的Intents之间传递它们(请参阅Starting another activity