簡體   English   中英

彈出活動,而不是在堆棧上添加新的活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM