私はアプリを開発中で、クリック時にボタンの背景色を更新しようとしています。私がしたいことは、UIでボタンの背景色を更新していませんスレッド
1)答えが正しいかどうかを確認するまで0.5秒待ちます。答えが正しい場合は、ボタンの色を緑に変更し、赤に変更します。
2)ボタンの色が変わってから0.5秒待って、質問を更新する機能を呼び出してください。ここで
だからそれだけでボタンの背景色を変更していない私のonClick方法、
@Override
public void onClick(View v) {
if(totalQuestionsAsked <= 10){
if(score >= 10)
score = 10;
//Setting up button and image
final Button btnOne = (Button)findViewById(R.id.btn_one);
final Button btnTwo = (Button)findViewById(R.id.btn_two);
final Button btnThree = (Button)findViewById(R.id.btn_three);
final Button btnFour = (Button)findViewById(R.id.btn_four);
final ImageView flagImg = (ImageView)findViewById(R.id.flag_img);
final JSONArray country = getFilesArray()[0];
final JSONArray flag = getFilesArray()[1];
final View view = v;
switch (v.getId()){
case R.id.btn_one:
btnOne.setBackgroundColor(Color.parseColor("#00b0ff"));
break;
case R.id.btn_two:
btnTwo.setBackgroundColor(Color.parseColor("#00b0ff"));
break;
case R.id.btn_three:
btnThree.setBackgroundColor(Color.parseColor("#00b0ff"));
break;
case R.id.btn_four:
btnFour.setBackgroundColor(Color.parseColor("#00b0ff"));
break;
}
final Handler handler = new Handler();
final Runnable runnerTwo = new Runnable() {
@Override
public void run() {
if(totalQuestionsAsked <= 10){
createCountryElements(flag, country, btnOne, btnTwo, btnThree, btnFour, flagImg);
}else{
Toast.makeText(MainActivity.this, "Your total score is: " + String.valueOf(score),
Toast.LENGTH_LONG).show();
}
}
};
Runnable runnerOne = new Runnable() {
@Override
public void run() {
if(view.getTag().equals(flagImg.getTag())){
score++;
switch (view.getId()){
case R.id.btn_one:
setButtonGreen(R.id.btn_one);
break;
case R.id.btn_two:
setButtonGreen(R.id.btn_two);
break;
case R.id.btn_three:
setButtonGreen(R.id.btn_three);
break;
case R.id.btn_four:
setButtonGreen(R.id.btn_four);
break;
}
}else{
switch (view.getId()){
case R.id.btn_one:
setButtonRed(R.id.btn_one);
break;
case R.id.btn_two:
setButtonRed(R.id.btn_two);
break;
case R.id.btn_three:
setButtonRed(R.id.btn_three);
break;
case R.id.btn_four:
setButtonRed(R.id.btn_four);
break;
}
}
totalQuestionsAsked++;
handler.postDelayed(runnerTwo, 1000);
}
};
handler.postDelayed(runnerOne, 500);
}
}
です。他のすべてが適切に動作しています。誰が私のミスがどこにあるのか教えてもらえますか?
ご協力いただきありがとうございます。 :D
UIスレッドの色を変更していることをあなたのコードで簡単に確認できます。ですから、 'runOnUIThread {}'ブロックの色変更コードを移動することができます。 –
@ReazMurshed、まず、選択したボタンの色を変更しています。選択されたボタンが正しかったかどうかを確認し、それに応じて色を変えたい場合は、0.5秒待ってください。 0.5秒後よりも、質問を更新してください。それが私がしたいことです。 –
スイッチ内のケースは決して呼び出されません。ビュービュー= vは、OnClickEventをインターセプトするビューです。また、スイッチループで提供するボタンには、OnClickListenerがありません。あなたが私のことを理解しているかどうかわかりません。 – ErenisR