2015-02-09 61 views
1

我有一個項目,我正在開發的Eclipse的Android 4.4 KitKat這個複雜的問題。我開發了一項活動,向用戶顯示三種不同類型的活動供他選擇:簡易中和硬模式測驗。我只有一種評分活動,即所有三種評估模式的結果,計算用戶的總分。在測試模式之間進行區分的方式是我在活動的意圖內傳遞一個字符串變量,並且在分數活動中,我有一個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中不顯示任何東西,如果要求提供更多信息,請讓我知道

+0

我不知道我理解你的問題。你是說ScoreActivity沒有顯示出來嗎? – Olumide 2015-02-09 19:10:04

回答

2

與您的代碼的問題是發生和的

finish(); 

在您的競猜活動地點調用完成,再創建和啓動ScoreActivity活動,因此在ScoreActivity甚至有機會打開之前殺掉了Quiz活動並回到之前的活動。

實際上,由於某種原因,有時它可能實際上設法在ScoreActivity完成自殺之前打開ScoreActivity,但是隨後遇到另一個問題;只要您在ScoreActivity中設置了分數,您就再次調用finish(),這會有效地殺死該活動。

所以現在唯一剩下的活動就是測驗之前的活動,它可以回溯到。