2013-09-25 15 views
0

我的工作onLongClickListnerDialogBox我想補充button,當我點擊它打開dialogBox(它首先問你要選擇的按鈕)點擊DialogBu​​tton True後回來選擇button則持有button一段時間來檢查答案,如果答案是正確的,那麼它顯示消息「答案是正確的」,錯誤的顯示消息「答案是錯誤的」。如何在按鈕上同時實現DialogBox和onLongClick?

這裏是我的代碼: -

public class QuestionActivity extends Activity implements OnClickListener{ 
private Question currentQ; 
private GamePlay currentGame; 




@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.question); 
    processSession(); 

} 
private void processSession(){ 
      /** 
    * Configure current game and get question 
    */ 
    currentGame = ((CYKApplication)getApplication()).getCurrentGame(); 
    currentQ = currentGame.getNextQuestion(); 
    Button nextBtn1 = (Button) findViewById(R.id.answer1); 
    nextBtn1.setOnClickListener(this); 
    Button nextBtn2 = (Button) findViewById(R.id.answer2); 
    nextBtn2.setOnClickListener(this); 
    Button nextBtn3 = (Button) findViewById(R.id.answer3); 
    nextBtn3.setOnClickListener(this); 
    Button nextBtn4 = (Button) findViewById(R.id.answer4); 
    nextBtn4.setOnClickListener(this); 
    Button nextBtn5 = (Button) findViewById(R.id.answer5); 
    nextBtn5.setOnClickListener(this); 
    /** 
    * Update the question and answer options.. 
    */ 
    setQuestions(); 

} 


/** 
* Method to set the text for the question and answers from the current games 
* current question 
*/ 
private void setQuestions() { 
    //set the question text from current question 
    String question = Utility.capitalise(currentQ.getQuestion()); 
    TextView qText = (TextView) findViewById(R.id.question); 
    qText.setText(question); 

    //set the available options 
    List<String> answers = currentQ.getQuestionOptions(); 
    TextView option1 = (TextView) findViewById(R.id.answer1); 
    option1.setText(Utility.capitalise(answers.get(0))); 

    TextView option2 = (TextView) findViewById(R.id.answer2); 
    option2.setText(Utility.capitalise(answers.get(1))); 

    TextView option3 = (TextView) findViewById(R.id.answer3); 
    option3.setText(Utility.capitalise(answers.get(2))); 

    TextView option4 = (TextView) findViewById(R.id.answer4); 
    option4.setText(Utility.capitalise(answers.get(3))); 


    int score = currentGame.getScore(); 
    String scr = String.valueOf(score); 
    TextView score1 = (TextView) findViewById(R.id.score); 
    score1.setText(scr); 
    try{ 
    new CountDownTimer(20000, 1000) { 

     public void onTick(long millisUntilFinished) { 
      TextView timers = (TextView) findViewById(R.id.timers); 
      timers.setText("" + millisUntilFinished/1000); 
     } 

     public void onFinish() { 
      currentGame.decrementScore(); 
      processSession(); 
       } 
    }.start(); 
    } 
    catch(Exception ex) 
    { 
     throw new RuntimeException(ex); 
    } 
    } 


@Override 
public void onClick(View arg0) { 
    //Log.d("Questions", "Moving to next question"); 
    if(arg0.getId()==R.id.answer5) 
    { 
    new AlertDialog.Builder(this).setMessage("Are you sure?").setCancelable(true).setPositiveButton("Yes",new DialogInterface.OnClickListener() { 


    public void onClick(DialogInterface dialog,int id) { 
      finish(); 
      } 
     }).setNegativeButton("No", null).show(); 

      } 

    else 
    { 

     if(!checkAnswer(arg0)) return; 

    /** 
    * check if end of game 
    */ 
    if (currentGame.isGameOver()){ 
     //Log.d("Questions", "End of game! lets add up the scores.."); 
     //Log.d("Questions", "Questions Correct: " + currentGame.getRight()); 
     //Log.d("Questions", "Questions Wrong: " + currentGame.getWrong()); 
     Intent i = new Intent(this, EndgameActivity.class); 
     startActivity(i); 
     finish(); 
    } 
    else{ 
     Intent i = new Intent(this, QuestionActivity.class); 
     startActivity(i); 
     finish(); 
     } 
    } 
    } 



@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    switch (keyCode) 
    { 
    case KeyEvent.KEYCODE_BACK : 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
} 


/** 
* Check if a checkbox has been selected, and if it 
* has then check if its correct and update gamescore 
*/ 
private boolean checkAnswer(View view) { 

    Button b=(Button) view; 
    String answer = b.getText().toString(); 

    b.setBackgroundResource(R.drawable.ans); 
     // disable the button for further clicks. 
     b.setEnabled(false); 
     //Log.d("Questions", "Valid Checkbox selection made - check if correct"); 
     if (currentQ.getAnswer().equalsIgnoreCase(answer)) 
     { 
      b.setBackgroundResource(R.drawable.ansgreen); 
      //Log.d("Questions", "Correct Answer!"); 
      currentGame.incrementScore(); 
     } 
     else{ 
      b.setBackgroundResource(R.drawable.ansred); 
      //Log.d("Questions", "Incorrect Answer!"); 
      currentGame.decrementScore(); 
     } 
     return true; 
    } 

任何答案是明顯的。

在此先感謝

回答

0

如果你想顯示與longClick答案按鈕應該高度onLongClickListener這個按鈕。

  1. onLongClickListener落實到類
  2. 在overrided法「onLongClick」寫代碼,描述要顯示什麼回答。
+0

歡迎回復!!我想添加Dailog First onclick按鈕後,我想按住我的按鈕檢查一段時間。如果我的回答是正確的,那麼它會顯示消息您的回答是否正確。 – UchihaSasuke

相關問題