在我的项目中有一些课程。我们称他们为A,B,C,D。 我发现了两个问题:例如我从“A”级到“B”再到“C”。在“B”级有按钮和计数器。当我第一次在类“B”中按下btn时,启动计数器,例如当计数器在6号时,“C”级打开。当我现在从“C”级回到“B”级(通过点击我手机的后面的btn)时,计数器位于6号,而不是0。
第二个问题:我从“A”变为“B”,然后变为“C”,然后变回“B”,然后变为“C”,依此类推。当我在类“C”中推回btn后,我应该回到“B”级然后再回到“A”然后退出。但是接下来会发生什么:我回到班级“B”然后我回到班级“C”然后回到班级“B”然后回到班级“A”,所以它回到之前打开的所有班级。 / p>
更重要的是,我的退出按钮(仅在开头的Main.this.finish();)
上)。如果我通过某些课程,它的行为就像后退按钮一样,使得退出应用程序变得不可能。
如果这些问题无关,我不知道,但我想听听你对它们的看法。
感谢。
修改:我已阅读您的评论和建议的网页。我想现在更具体一点。现在,我们来谈谈三个活动。 Start.java,CustomizeDialog.java和Highscores.java。当用户打开Start.java(通过单击Main.java中的按钮)时,将启动计数器。然后在3秒后,用户将自动转发到CustomizeDialog.java以写入他的名字。在该对话框上单击“确定”后,他将转发到HighScores.java。现在如果他点击后退按钮,他会回到Start.java。这里的计数器位于之前的位置(我知道这是Android的行为)。
所以 主要 - >开始 - > CustomizeDialog - > Higshcores - >点击返回 - >开始 (CustomizeDialog不是一个活动,而是一个对话框,这就是为什么在返回时省略它)
我在清单中试过这个,但什么也没做:
<activity
android:name=".Start"
android:label="@string/app_name"
android:finishOnTaskLaunch="true">
</activity>
这就是我使用计数器的方式:
在onCreate方法的按钮监听器中:
counter = new MyCount(3000,1000);
if (started == false)
{
counter.start();
started = true;
}
在onCreate方法之外:
public class MyCount extends CountDownTimer{
public MyCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onFinish() {
//filewrite
CustomizeDialog customizeDialog = new CustomizeDialog(Start.this);
customizeDialog.show();
};
@Override
public void onTick(long millisUntilFinished) {
tv.setText("" + millisUntilFinished/1000);
}
CustomizeDialog中的OK按钮监听器:
Intent intenthighscores = new Intent(mActivity, Highscores.class);
mActivity.startActivity(intenthighscores);
//Activity mActivity; is declared at the beginning of the dialog
我删除了退出按钮,因为我读到它是不必要的,我会稍后处理它与第二个问题,如果它仍然存在,因为它与第一个问题有关。
答案 0 :(得分:1)
在活动C完成后,活动B不会重新创建。如果要重置计数器,请在活动B的onResume()
方法中执行此操作。
我不知道是什么问题。您是否覆盖onBackPressed()
或onKeyDown()
?
Main.this.finish()
仅完成一项活动 - 活动主要。它没有完成申请。
答案 1 :(得分:1)
至于你的前两个问题:这是正常行为,请参阅this article以获取有关后台堆栈的详细说明(另请注意,“class”是一般表达式,您正在讨论的Android应用程序组件被称为活动)。
关于退出申请,请阅读this question和第一个答案。