私はDatePickerDialogを表示するために多くのedittextを持っていますので、メソッドとedittextをパラメータとして作成します。次にJavaは内部クラスからアクセスするときにパラメータが最終的であると述べました。edittextはfinalと宣言され、settextは動作しません。
しかし、私は、アプリケーションを実行すると、それは私が編集のテキストをよく実行するようにしない別のコードを持っているので、最終的にedittextが問題であると思うedittext.settext()で停止しました。
この
はコードです: public DatePickerDialog setDateTanggalBeri(final EditText editTanggal){
DatePickerDialog datePickTgl;
Calendar newCalendar = Calendar.getInstance();
datePickTgl = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onDateSet(DatePicker datePicker, int i, int i1, int i2) {
final Calendar newDate = Calendar.getInstance();
newDate.set(i,i1,i2);
editTanggal.setText(dateFormatter.format(newDate.getTime()));
}
},newCalendar.get(Calendar.YEAR),newCalendar.get(Calendar.MONTH),newCalendar.get(Calendar.DAY_OF_MONTH));
return datePickTgl;
}
、ここでエラーです:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.droid.anindya.jadwalimunisasibayiku, PID: 5669
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence)' on a null object reference
at com.droid.anindya.jadwalimunisasibayiku.Display_Jadwal$1.onDateSet(Display_Jadwal.java:209)
at android.app.DatePickerDialog.onClick(DatePickerDialog.java:137)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
、これは私が実装方法です:のonCreate外
状態:
DatePickerDialog DPD1;
DatePickerDialog DPD2;
DatePickerDialog DPD3;
DatePickerDialog DPD4;
DatePickerDialog DPD5;
状態i n側のonCreate:クリックで
DPD1 = setDateTanggalBeri(textTgl1);
DPD2 = setDateTanggalBeri(textTgl2);
DPD3 = setDateTanggalBeri(textTgl3);
DPD4 = setDateTanggalBeri(textTgl4);
DPD5 = setDateTanggalBeri(textTgl5);
....
EDITTEXT:あなたはEditText
が同じActivity
であることを言ったので
public void tanggalBeri1Clicked(View view) {
DPD1.show();
}
public void tanggalBeri2Clicked(View view) {
DPD2.show();
}
....
あなたの関数 'setDateTanggalBeri()'同じ活性ですか、あなたのEditTextの初期化で断片化しますか? –
はいそれは同じアクティビティにあります。 EditTextの初期化を別のメソッドの中に入れ、それをonCreateで呼び出します。 –
エラーメッセージを挿入できますか? –