XML инфляция и EditText - PullRequest
       35

XML инфляция и EditText

1 голос
/ 18 марта 2012

Я отправил еще один вопрос по этому вопросу, но я задаю другой, поскольку проблема сузилась.Моя проблема в том, что я получаю исключение нулевого указателя изнутри внутреннего onClick в строке, где создается первый String strTime.Предполагается, что причиной этого является то, что файл poptest.xml не раздувается должным образом.Кто-нибудь может понять, почему это происходит?

У меня есть такой метод:

@Override
public void onClick(View v) {

    switch (v.getId()) {

    case R.id.newappt:

       final Dialog dialog = new Dialog(this);
       dialog.setContentView(R.layout.poptest);
       dialog.setTitle("Create New Appointment");
       dialog.setCancelable(true);

       Button buttoncancel = (Button) dialog.findViewById(R.id.Button01);
       buttoncancel.setOnClickListener(new OnClickListener() {

        // on click for cancel button
           @Override
           public void onClick(View v) {
               dialog.dismiss();
           }
       });

       Button buttonsave = (Button) dialog.findViewById(R.id.Button02);
       buttonsave.setOnClickListener(new OnClickListener() {

        // on click for save button   
           @Override
            public void onClick(View v) {

             String strTime = ((EditText) findViewById(R.id.evnttime)).getText().toString();

             String strTitle = ((EditText) findViewById(R.id.evnttitle)).getText().toString();

             String strDet = ((EditText) findViewById(R.id.evntdet)).getText().toString();



            cursor = getAppts();
            addAppt(strTime, strTitle, strDet);
            showAppts(cursor);
            dialog.dismiss();
    }
       });

       dialog.show();
        break;

    case R.id.delappt:
        rmvall();
        break;
    }

}

Ответы [ 3 ]

2 голосов
/ 18 марта 2012

Попробуйте, если ваши EditText в Dialog:

String strTime = ((EditText) dialog.findViewById(R.id.evnttime)).getText().toString();
String strTitle = ((EditText) dialog.findViewById(R.id.evnttitle)).getText().toString();
String strDet = ((EditText) dialog.findViewById(R.id.evntdet)).getText().toString();
0 голосов
/ 18 марта 2012

Моим первым предположением будет то, что findViewById внутри слушателя onClick ищет R.id.evnttime как дочерний элемент buttonave.

метод findViewById принадлежит классу View и, следовательно, доступен для каждого подпрограммыКласс, как кнопки, макеты ... Он ищет до последних дочерних элементов представления, на котором вы его используете.

Возможные решения здесь: найдите свои представления вне метода onClick или используйте функцию findViewById основного представления (диалогового окна).

0 голосов
/ 18 марта 2012
         String strTime = ((EditText) dialog.findViewById(R.id.evnttime)).getText().toString();

         String strTitle = ((EditText) dialog.findViewById(R.id.evnttitle)).getText().toString();

         String strDet = ((EditText) dialog.findViewById(R.id.evntdet)).getText().toString();
...