gpt4 book ai didi

android - Activity 弹出而不是在堆栈上添加一个新的

转载 作者:行者123 更新时间:2023-11-29 20:53:35 26 4
gpt4 key购买 nike

我在 Eclipse 中为 Android 4.4 KitKat 开发的项目中遇到了这个复杂的问题。我开发了一项 Activity ,向用户展示三种不同类型的 Activity 供他选择,Easy Medium 和 Hard 模式测验。我只有一个分数 Activity ,所有三种测验模式都会产生,计算用户的总分。区分测验模式的方法是我在 Activity 的 Intent 中传递一个字符串变量,在评分 Activity 中我有一个 if 语句匹配 if(activityString.equals("easy")) 然后计算这个评分系统。问题是,当我完成测验模式中的问题时,分数 Activity 不会出现在堆栈顶部,而是堆栈上的前一个 Activity (测验主菜单 Activity )出现在顶部(弹出测验 Activity )。真的很复杂,不确定我是否可以提出这么复杂的问题,但这是我的代码:

检查之前声明的数组列表中是否存在更多问题的代码 fragment 。使用单选按钮回答答案。在第一个 else 语句中是计算正确答案的地方,然后转到下一个所需的 Activity ScoreActivityQuizActivity.java(测验主菜单)

btnNext.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
RadioButton uansw = (RadioButton) findViewById(rg.getCheckedRadioButtonId());
String ansText = uansw.getText().toString();

if (ansText.equalsIgnoreCase(answers[flag]))
{
correct++;
}
else
{
wrong++;
}
//increment flag to show next question
flag++;
if(flag<questions.length)
{
rb1.setChecked(true);
//change question text view to next question
tv.setText(questions[flag]);
//change radio button options to next value of the array
rb1.setText(opt[flag * 3]);
rb2.setText(opt[flag * 3 + 1]);
rb3.setText(opt[flag * 3 + 2]);

}
else
{
//shows negative marks if toggle is on
if(MainQuizActivity.tbflag )
{
marks = correct - wrong;
}
//if toggle is off
else
{
marks = correct;
}
finish();
mCountDownTimer.cancel();
Intent in = new Intent(getApplicationContext(),ScoreActivity.class);
in.putExtra("activity", "easy");
startActivity(in);
}
}
});

这是我的 ScoreActivity.java 代码 fragment ,与简易模式测验相关,获取用户输入的分数

if(activityString.equals("easy"))
{
txtViewQuizCompleted.setText("You have successfully completed \nEasy Mode Quiz!");
sb.append("Correct Answers:" + QuizActivity.correct);
sb.append("\nWrong Answers:" + QuizActivity.wrong);
sb.append("\nTime Left:" + timeLeft + "secs");
sb.append("\n\nFinal SCORE: " + finalScore);
//print values to textview
tv.setText(sb);
finish();
}

抱歉信息太多,尽量保持简单。 LogCat 不显示任何内容,如果需要更多信息,请告诉我

最佳答案

您的代码的问题是发生和位置

finish();

在您的测验 Activity 中,您在创建和启动 ScoreActivity Activity 之前调用完成,因此在 ScoreActivity 有机会打开之前终止测验 Activity 并返回到上一个 Activity 。

但实际上,出于某种原因,有时它实际上可能会在它完成 self 终止之前设法打开 ScoreActivity,但随后您会遇到另一个问题;一旦您在 ScoreActivity 中设置分数,您就会再次调用 finish(),这会有效地终止 Activity 。

所以现在唯一剩下的 Activity 是测验之前的 Activity ,它可以返回。

关于android - Activity 弹出而不是在堆栈上添加一个新的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28417341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com