XML通胀和EditText

时间:2012-03-18 14:46:05

标签: android nullpointerexception android-edittext

我已经发布了另一个问题,但我问另一个问题已经缩小了一些问题。我的问题是我从创建第一个String strTime的行的内部onClick内部获取空指针异常。有人建议这样做的原因是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 个答案:

答案 0 :(得分:2)

如果您的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();

答案 1 :(得分:0)

         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();

答案 2 :(得分:0)

我的第一个猜测是onClick侦听器中的findViewById正在搜索R.id.evnttime作为buttonsave的子节点。

findViewById方法属于View类,因此可用于每个子类,如Buttons,Layouts ... 它正在搜索您使用它的视图的最后一个子项。

这里可能的解决方案: 在onClick方法之外找到你的视图或使用主视图的findViewById函数(对话框)。