使用inflater自定义我的警报框不起作用

时间:2018-01-28 04:15:04

标签: android

我是Android Studio的初学者。我正在为我们的学校活动开发我的Android测验应用程序。下面显示的代码是我必须检查我的真实或错误问题中的答案是否正确。我想显示一个自定义AlertBox,但它不起作用。应用程序停止并返回其先前的活动。我试图将其更改为默认警报框。它工作正常,但如果我添加inflater它不起作用。我的代码出了什么问题?

  public void checkAnswer(View view) {

            // Get pushed button.
            Button answerBtn = (Button) findViewById(view.getId());
            String btnText = answerBtn.getText().toString();

            TextView title = (TextView) view.findViewById(R.id.title);
            ImageButton imageButton = (ImageButton) 
            view.findViewById(R.id.image);
            TextView laman = (TextView) view.findViewById(R.id.laman);

            if (btnText.equals(rightAnswer)) {
                // Correct!
                startService(new Intent(roxasquiz.this, tamamusic.class));
                imageButton.setImageResource(R.drawable.check);
                title.setText("Magaling!");
                laman.setText("Tama ang iyong sagot! ");
                rightAnswerCount++;

            } else {
                // Wrong...
                startService(new Intent(roxasquiz.this, malimusic.class));
                title.setText("Magsanay pa!");
                laman.setText("Mali ang iyong sagot! ");
                imageButton.setImageResource(R.drawable.wrong);
            }

            // Create Dialog.

            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            LayoutInflater inflater = getLayoutInflater();
            View v = inflater.inflate(R.layout.custom_layout, (ViewGroup) view, false);
            builder.setPositiveButton("OK", new 
            DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (quizCount == QUIZ_COUNT) {
                        // Show Result.
                        Intent intent = new Intent(getApplicationContext(), roxasresult.class);
                        intent.putExtra("RIGHT_ANSWER_COUNT", rightAnswerCount);
                        startActivity(intent);

                    } else {
                        quizCount++;
                        showNextQuiz();
                    }
                }
            });
            builder.setView(v);
            builder.setCancelable(false);
            builder.show();
        }

以下是在上述代码之前编写的代码。

 public class roxasquiz extends AppCompatActivity {

private TextView timer;
private TextView countLabel;
private TextView questionLabel;
private Button answerBtn1;
private Button answerBtn2;

private String rightAnswer;
private int rightAnswerCount = 0;
private int quizCount = 1;
static final private int QUIZ_COUNT = 3;

ArrayList<ArrayList<String>> quizArray = new ArrayList<>();

String quizData[][] = {
        // {"Question", "Right Answer", "Choice1", "Choice2", "Choice3"}
        {"Sa loob ng 10 taon naging speaker of the House si Manuel Roxas. ", 
   "MALI", "TAMA", },
        {"Nagtapos ng abogasya si Manuel Roxas sa University of Santo 
    Tomas.", "MALI", "TAMA",},
        {"Sa lalawigan ng Tarlac ipinanganak si Manuel Roxas. ", "MALI", 
   "TAMA", },


};


@Override
protected void onCreate(Bundle savedInstanceState) {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.rizaltruefalse);
    stopService(new Intent(roxasquiz.this, BackgroundSoundService.class));
    countLabel = (TextView)findViewById(R.id.countLabel);
    questionLabel = (TextView)findViewById(R.id.questionLabel);
    answerBtn1 = (Button)findViewById(R.id.answerBtn1);
    answerBtn2 = (Button)findViewById(R.id.answerBtn2);
    timer = (TextView)findViewById(R.id.timerlabel);
    timer = (TextView)findViewById(R.id.timerlabel);

    startService(new Intent(roxasquiz.this, timer.class));

    new CountDownTimer(61000, 1000) {

        public void onTick(long millisUntilFinished) {
            timer.setText("Oras:" + millisUntilFinished / 1000);

        }

        public void onFinish() {
            timer.setText("TAPOS NA!");
            timeUp();

        }

        private void timeUp() {
            stopService(new Intent(roxasquiz.this, tamamusic.class));
            stopService(new Intent(roxasquiz.this, malimusic.class));
            AlertDialog.Builder builder = new AlertDialog.Builder(
                    roxasquiz.this);
           builder.setTitle("Tapos na ang oras!")
                    .setCancelable(false)
                    .setNeutralButton(android.R.string.ok,
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, 
     int id) {
                                    Intent intent = new 
   Intent(getApplicationContext(), roxasresult.class);
                                    intent.putExtra("RIGHT_ANSWER_COUNT", 
   rightAnswerCount);
                                    startActivity(intent);
                                }
                            });
            AlertDialog alert = builder.create();
            alert.show();

        }
    }.start();

    // Create quizArray from quizData.
    for (int i = 0; i < quizData.length; i++) {
        // Prepare array.
        ArrayList<String> tmpArray = new ArrayList<>();
        tmpArray.add(quizData[i][0]);  // Country
        tmpArray.add(quizData[i][1]);  // Right Answer
        tmpArray.add(quizData[i][2]);  // Choice1


        // Add tmpArray to quizArray.
        quizArray.add(tmpArray);
    }

    showNextQuiz();

}

public void showNextQuiz() {

    // Update quizCountLabel.
    countLabel.setText("Tanong " + quizCount);

    // Generate random number between 0 and 14 (quizArray's size - 1).
    Random random = new Random();
    int randomNum = random.nextInt(quizArray.size());

    // Pick one quiz set.
    ArrayList<String> quiz = quizArray.get(randomNum);

    // Set question and right answer.
    // Array format: {"Country", "Right Answer", "Choice1", "Choice2", 
 "Choice3"}
    questionLabel.setText(quiz.get(0));
    rightAnswer = quiz.get(1);

    // Remove "Country" from quiz and Shuffle choices.
    quiz.remove(0);

    answerBtn1.setText("TAMA");
    answerBtn2.setText("MALI");

    quizArray.remove(randomNum);

}

这是我的代码,使其成为默认警报框,它工作正常。

 Button answerBtn = (Button) findViewById(view.getId());
    String btnText = answerBtn.getText().toString();

    String alertTitle;
    String laman;

    if (btnText.equals(rightAnswer)) {
        // Correct!
        startService(new Intent(roxasquiz.this, tamamusic.class));

        alertTitle = "Magaling!";
        laman = "Tama ang iyong sagot";

        rightAnswerCount++;

    } else {
        // Wrong...
       alertTitle = "Magsanay pa!";
        laman = "Mali ang iyong sagot";
    }

    // Create Dialog.
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle(alertTitle);
    builder.setMessage(laman);
    builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            if (quizCount == QUIZ_COUNT) {
                // Show Result.
                Intent intent = new Intent(getApplicationContext(), roxasresult.class);
                intent.putExtra("RIGHT_ANSWER_COUNT", rightAnswerCount);
                startActivity(intent);

            } else {
                quizCount++;
                showNextQuiz();
            }
        }
    });
    builder.setCancelable(false);
    builder.show();
}

1 个答案:

答案 0 :(得分:0)

AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);

LayoutInflater inflater = this.getLayoutInflater();
View dialogView = inflater.inflate(R.layout.alert_label_editor, null);
dialogBuilder.setView(dialogView);


AlertDialog alertDialog = dialogBuilder.create();
alertDialog.show();