Конструктор Android AlertDialog не определен - PullRequest
1 голос
/ 07 августа 2011

Я пытаюсь отобразить диалоговое окно с предупреждением, если информация об учетной записи отсутствует при нажатии кнопки проверки учетной записиЯ получаю сообщение об ошибке в Eclipse, где new AlertDialog.Builder(this) говорит the constructor AlertDialog.Builder(new View OnClickListener(){}) is undefined.Код работает нормально, если я добавлю его в onCreate действия.

checkButton.setOnClickListener(new OnClickListener() {
        public void onClick(View Arg0){
            String AccNum = null, Store = null;
            final SharedPreferences settings = getSharedPreferences(CHECK_PREFERENCES, MODE_PRIVATE);

            if (settings.contains("Account") == true){
                AccNum = (settings.getString("Account", "default"));
                Store = (settings.getString("Store", "default"));
            }
            if (AccNum.length() < 7) { 
                AlertDialog alert = new AlertDialog.Builder(this).create();
                alert.setTitle("Account Information missing!");
                alert.setMessage("Enter now? ");

                alert.setButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            startActivity(new Intent(CheckOrder.this, GoToSetup.class));
                        }
                });
                alert.setButton2("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            return;
                        }
                });
                alert.show();   

            }
        }
});

Ответы [ 3 ]

17 голосов
/ 07 августа 2011

Ошибка возникает из-за того, что this - это создаваемое OnClickListener (при вызове checkButton.setOnClickListener(new OnClickListener(){), а не родительское действие. Если ваш класс активности ParentActivity, попробуйте это:

AlertDialog alert = new AlertDialog.Builder(ParentActivity.this).create();
2 голосов
/ 05 июня 2013

Вашему классу необходимо расширить Activity, например,

public class MyClass extends Activity{
// ... Your code
}
1 голос
/ 17 мая 2015

У меня была такая же проблема.Попробуйте это.

AlertDialog.Builder alert = new AlertDialog.Builder(MainActivity.this);
...