2

これは私のコードです

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

この行には NullPointerException があり、AlertDialog.Builder を使用しているため、datePicker は findById ではなかったと思います。

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

使っadb.findViewById();てみましたが間違いです(メソッドfindViewById(int)はAlertDialog.Builder型に対して未定義です)。助けてくれませんか?

4

5 に答える 5

15

変化する

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();
于 2012-10-23T08:24:58.030 に答える
2

次のパラメータDatePickerを使用して検索します。dialog

DatePicker datePicker = (DatePicker) ((Dialog) dialog).findViewById(R.id.datePicker);
于 2012-10-23T08:22:42.500 に答える
0

私の場合: まず、

dialog.show()、

そしてそれが終わって初めて私は使うことができました

dialog.findviewById(R.id.myID)。

show() の呼び出しに失敗すると、findViewByID で null が返されます。

于 2015-06-15T14:28:58.983 に答える