если что-то Alert Dialog на кнопку нажмите вопрос Android - PullRequest
0 голосов
/ 04 октября 2011
b.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        if(bob1i + bih1i > 4 || bob2i + bih2i > 4){
            error = new AlertDialog.Builder(this);
            error.setMessage("No more than four bags per team are allowed./n"
                +"Please review your scores.");

            error.setNeutralButton("Ok",
              new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {
                    Toast.makeText(getApplicationContext(), "Review",
                    Toast.LENGTH_SHORT).show();
                }
              });
              error.show(); 
            }
        }
   }

тогда у меня есть оператор else для того, что происходит, если нет ошибки

я получаю ошибку в строке 4 "Конструктор AlertDialog.Builder (new View.OnClickListener () {})undefined "в затмении

Ответы [ 3 ]

1 голос
/ 04 октября 2011

Строка с: error = new AlertDialog.Builder(this);

передает View.OnClickListener, когда оно должно проходить Context.

Вы не можете передать this как Context, когда находитесь внутри анонимного класса.

0 голосов
/ 04 октября 2011

Вы передаете onClickListener() вместо Context из-за использования анонимного объявления. Измените это на это:

b.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
        if(bob1i + bih1i > 4 || bob2i + bih2i > 4){
            error = new AlertDialog.Builder(getApplicationContext());

            error.setMessage("No more than four bags per team are allowed./nPlease review your scores.");

            error.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface arg0, int arg1) {
                    Toast.makeText(getApplicationContext(), "Review", Toast.LENGTH_SHORT).show();
                }
            });
            error.show();   
        }
    }
}
0 голосов
/ 04 октября 2011

Как сказал Scienceprodigy, ошибка в том, что «this» не определено в анонимном классе.Но вы все еще можете сделать эту работу.Допустим, вы пытаетесь сделать это в каком-то действии с именем класса MyActivity.Просто сделайте это:

error = new AlertDialog.Builder(MyActivity.this);
...