[英]Activity pops instead of adding a new one on stack
我在Eclipse中為Android 4.4 KitKat開發的項目中遇到了這個復雜的問題。 我開發了一個活動,向用戶顯示三種不同類型的活動,供他從中輕松模式測驗中選擇。 我只有一種得分活動,所有三種測驗模式都會得出此結果,以計算用戶的總得分。 區分測驗模式的方式是,我在活動的意圖內傳遞了一個字符串變量,在score活動中,我有一個if語句與if(activityString.equals(“ easy”))相匹配,然后計算得出計分系統。 問題是,當我完成測驗模式中的問題時,得分活動不會位於堆棧頂部,而是堆棧上的上一個活動(測驗主菜單活動)位於頂部(彈出測驗活動)。 確實很復雜,不確定是否可以提出這樣一個復雜的問題,但這是我的代碼:
檢查之前聲明的數組列表中是否存在更多問題的代碼片段。 使用單選按鈕回答答案。 在第一個else語句中,將計算正確答案,然后移至所需的下一個活動,ScoreActivity QuizActivity.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代碼片段,與簡單模式測驗有關,它獲取用戶輸入的分數
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();
在您的測驗活動中,您在創建和啟動ScoreActivity活動之前將其稱為“完成”,因此將殺死測驗活動,並在ScoreActivity甚至有機會打開之前返回上一個活動。
實際上,由於某種原因,有時它實際上可以設法在完成殺死自己之前打開ScoreActivity,但是隨后您遇到了另一個問題。 一旦在ScoreActivity中設置了分數,就再次調用finish(),這將有效地終止該活動。
因此,現在剩下的唯一活動是測驗之前的活動,該活動可以返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.