bluetooth99 2012-11-12 06:25 采纳率: 0%
浏览 6455
已采纳

在AlertDialog.Builder中用到findViewById()出现NullPointer异常

先看代码:

  @Override
    public void onClick(View v) {
    final AlertDialog.Builder adb = new AlertDialog.Builder(getApplicationContext());
adb.setView(LayoutInflater.from(getApplicationContext()).inflate(R.layout.custom, null));

adb.setPositiveButton("Add",new android.content.DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int arg1) {

                DatePicker datePicker = (DatePicker)findViewById(R.id.datePicker);

                java.util.Date date = null;
                Calendar cal = GregorianCalendar.getInstance();
                cal.set(datePicker.getYear(),datePicker.getMonth(), datePicker.getDayOfMonth());
                date = cal.getTime();
            }                  
        });             
adb.show();
}

在这行里出现异常:

cal.set(datePicker.getYear(),datePicker.getMonth(), datePicker.getDayOfMonth());

我尝试了用adb.findViewById();但是有错误:The method findViewById(int) is undefined for the type AlertDialog.Builder

帮忙看一下,谢谢

  • 写回答

2条回答 默认 最新

  • clcurie_11 2012-11-12 06:32
    关注

    DatePicker datePicker = (DatePicker)findViewById(R.id.datePicker);这一行改成:

    DatePicker datePicker = (DatePicker)adb.findViewById(R.id.datePicker);
    

    试下这个:

    final AlertDialog.Builder adb = new AlertDialog.Builder(this);
        final View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.main1, null);
        adb.setView(view);
        final Dialog dialog;
        adb.setPositiveButton("Add",new android.content.DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int arg1) {
    
                        DatePicker datePicker = (DatePicker)view.findViewById(R.id.datePicker1);
    
                        java.util.Date date = null;
                        Calendar cal = GregorianCalendar.getInstance();
                        cal.set(datePicker.getYear(),datePicker.getMonth(), datePicker.getDayOfMonth());
                        date = cal.getTime();
                    }                  
                });   
        dialog = adb.create();
        dialog.show();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 汇编语言除法溢出问题
  • ¥50 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波
  • ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗