Android背问题

时间:2011-06-05 07:19:25

标签: android

在我的项目中有一些课程。我们称他们为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

我删除了退出按钮,因为我读到它是不必要的,我会稍后处理它与第二个问题,如果它仍然存在,因为它与第一个问题有关。

2 个答案:

答案 0 :(得分:1)

  1. 在活动C完成后,活动B不会重新创建。如果要重置计数器,请在活动B的onResume()方法中执行此操作。

  2. 我不知道是什么问题。您是否覆盖onBackPressed()onKeyDown()

  3. Main.this.finish()仅完成一项活动 - 活动主要。它没有完成申请。

答案 1 :(得分:1)

至于你的前两个问题:这是正常行为,请参阅this article以获取有关后台堆栈的详细说明(另请注意,“class”是一般表达式,您正在讨论的Android应用程序组件被称为活动)。

关于退出申请,请阅读this question和第一个答案。