2017-02-20 34 views
0

我正在爲我的課提出一個問答應用程序,它提出10個問題,然後在最後一個問題後給出結果。沒有按鈕的Android工作室新意圖

我已經能夠設置測驗沒有問題,但我無法讓意向工作去下一個屏幕來顯示我的分數。我不知道我是否瘋了,或者如果我今天盯着我的電腦太久了。

public class MainActivity extends AppCompatActivity { 

private QuestionLibrary mQuestionLibrary = new QuestionLibrary(); 


private TextView mQuestionView; 
private Button mButtonChoice1; 
private Button mButtonChoice2; 
private Button mButtonChoice3; 

private String mAnswer; 
private int mScore = 0; 
private int mQuestionNumber = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    mQuestionView = (TextView) findViewById(R.id.question); 
    mButtonChoice1 = (Button) findViewById(R.id.button1); 
    mButtonChoice2 = (Button) findViewById(R.id.button2); 
    mButtonChoice3 = (Button) findViewById(R.id.button3); 

    updateQuestion(); 

    mButtonChoice1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (mButtonChoice1.getText() == mAnswer) { 
       mScore = mScore + 1; 

       updateQuestion(); 
      } else { 
       updateQuestion(); 
      } 
     } 
    }); 

    mButtonChoice2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (mButtonChoice2.getText() == mAnswer) { 
       mScore = mScore + 1; 

       updateQuestion(); 
      } else { 
       updateQuestion(); 
      } 
     } 
    }); 

    mButtonChoice3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      if (mButtonChoice3.getText() == mAnswer) { 
       mScore = mScore + 1; 

       updateQuestion(); 
      } else { 
       updateQuestion(); 
      } 

     } 
    }); 

    Intent intent = new Intent(this, ResultActivity.class); 
    startActivity(intent); 

} 

public void setScore(int score) { 
    mScore = score; 
} 

public int getScore() { 
    return mScore; 
} 

private void updateQuestion() { 
    mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber)); 
    mButtonChoice1.setText(mQuestionLibrary.getChoice1(mQuestionNumber)); 
    mButtonChoice2.setText(mQuestionLibrary.getChoice2(mQuestionNumber)); 
    mButtonChoice3.setText(mQuestionLibrary.getChoice3(mQuestionNumber)); 

    mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber); 
    mQuestionNumber++; 

} 

}

然後我的結果活動,我應該表現的最終得分。

public class ResultActivity extends MainActivity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_result); 
} 

public void results(View view) { 

    TextView results = (TextView) findViewById(R.id.score); 


    results.setText(getScore()); 


} 

}

+0

在你MainActivity你開始在的onCreate ResultActivity(),我想你不會看到你的問題的活動 – Avi

+0

移除的onCreate startActivity()()。將此添加到最後答案的按鈕點擊偵聽器 – Sanny

回答

0

這一舉動從MainActivity的onCreate()方法

Intent intent = new Intent(this, ResultActivity.class); 
startActivity(intent); 

private void updateQuestion() { 
    mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber)); 
    mButtonChoice1.setText(mQuestionLibrary.getChoice1(mQuestionNumber)); 
    mButtonChoice2.setText(mQuestionLibrary.getChoice2(mQuestionNumber)); 
    mButtonChoice3.setText(mQuestionLibrary.getChoice3(mQuestionNumber)); 

    mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber); 
    mQuestionNumber++; 

    Intent intent = new Intent(this, ResultActivity.class); 
    startActivity(intent); 

} 
1

與上面的代碼的問題是,你正在創建一個意圖開始一旦你啓動MainActivity,ResultActivity。我的建議是創建測驗結束時更改活動的意圖。您可以通過在測驗結束時提供函數並調用該函數,或者在您的案例中問題的計數等於10來做到這一點。而且,你可以在MainActivity中聲明一個名爲score的靜態變量,這個靜態變量可以被ResultActivity訪問,而不需要創建MainActivity對象。

事情是這樣的 -

public void changeActivity(){ 
    Intent intent = new Intent(this, ResultActivity.class); 
    startActivity(intent); 
} 
0

你應該像this.And下一個活動獲得意圖應該通過這樣的

Intent intent = new Intent(this, ResultActivity.class); 
intent.putExtra("score",mscore); 
startActivity(intent); 

值越來越試試這個在ResultActivity

Intent intent=getIntent(); 
results.setText(intent.getIntExtra("score",0)); 

這是因爲你沒有通過任何v提供下一個活動的線索。請參閱this。你正在制定一個初始意圖(Intent在創作活動中製作),它不會將你的結果傳遞給下一個答案。遊戲結束後你應該開始活動。