Ошибка при создании оповещения в Android - PullRequest
2 голосов
/ 20 марта 2011

Привет, я новый разработчик в Android, я тренируюсь и пытаюсь создать окно оповещения.

В моем проекте я поместил 2 текстовых поля для редактирования, и если какое-либо из них пустое, я хочу открыть окно предупреждения, если оба поля заполнены, оно переместится на новую страницу.

ниже моя кодировка

{ b = (Button)findViewById(R.id.widget30);

    et1 = (EditText)findViewById(R.id.et1);
    et2 = (EditText)findViewById(R.id.et2);


    b.setOnClickListener(new View.OnClickListener() 
    {
        @Override
        public void onClick(View v) 
        {
            if(et1.getText().toString().length() == 0 )
            {
                et.setVisibility(View.VISIBLE);
                alertbox();
            }
            else if (et2.getText().toString().length() == 0)
            {
                et.setVisibility(View.VISIBLE);
                alertbox();
            }
            else
            {
            main.this.finish();
            Intent myIntent = new Intent(v.getContext(), T.class);
             startActivityForResult(myIntent, 0);
            }
        }               
    });
}


public void alertbox() 
{
    et = new TextView(this);
    Builder alert =new AlertDialog.Builder(main.this);
    alert.setTitle("Alert");
    alert.setMessage("Required all fields");
    alert.setView(et);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener()
    {
         public void onClick(DialogInterface dialog, int whichButton)
         {
            dialog.cancel();
         }
    });
    AlertDialog alert1 = alert.create();
    alert1.show();
}
}

Он перемещается на новую страницу, но окно предупреждения не открывается, ниже приведена ошибка в logcat

java.lang.NullPointerException в следующих строках моего кода

{

if(et1.getText().toString().length() == 0 )
                {
                    et.setVisibility(View.VISIBLE);
                    alertbox();
                }
                else if (et2.getText().toString().length() == 0)
                {
                    et.setVisibility(View.VISIBLE);
                    alertbox();
                }
}
}

Пожалуйста, помогите мне определить, какую ошибку я совершил

Ответы [ 3 ]

1 голос
/ 20 марта 2011

вероятно на этой линии

 et.setVisibility(View.VISIBLE);

et - это объект null, так как он не существует. Это швы, которые вы создаете только после вызова alertbox ()

0 голосов
/ 20 марта 2012
b.setOnClickListener(new OnClickListener() 
{
    @Override
    public void onClick(View v) 
    {
        if(et1.getText().toString().length() == 0 )
        {

            alertbox();
        }
        else if (et2.getText().toString().length() == 0)
        {

            alertbox();
        }
        else
        {
         Intent myIntent = new Intent(main.this, T.class);
         startActivity(myIntent);
        }
    }               
});`
0 голосов
/ 20 марта 2011

Вы должны рассмотреть вопрос о документации: http://developer.android.com/guide/topics/ui/dialogs.html

Android SDK заботится о ваших диалогах с помощью методов showDialog () и dismissDialog (). Вы должны добавить необходимость добавить метод onCreateDialog и добавить свой код создания здесь.

Android также повторно использует диалоговое окно после его создания, тогда как в вашем коде вы каждый раз создаете новое.

Это самые основы того, что вы можете сделать, и есть много других вариантов.

...