Ich versuche, ein DatePicker-Dialogfeld zu erstellen, das geöffnet wird, wenn eine Schaltfläche in meinem Dialogfeld aus einem benutzerdefinierten Layout gedrückt wird. Ich habe viele verschiedene Code-Konfigurationen ausprobiert und das Ergebnis, wenn die Taste gedrückt wird, ist entweder eine NullPointerException oder die Schaltfläche tut nichts. Ich bin ziemlich neu in Android-Programmierung, aber meine beste Vermutung ist, dass findViewById nicht in der Lage ist, die Schaltfläche zu finden, weil ich in einem Fragment arbeite und die Inhaltsansicht nicht angegeben ist. Ich habe versucht, setContentView zu verwenden, aber das hat nicht funktioniert. Hoffentlich kann jemand das herausfinden und mich wissen lassen, wie sie es gemacht haben!NullPointerException beim Festlegen von onClickListener in einem Fragment
NewTaskDialogFragment.java:
public class NewTaskDialogFragment extends DialogFragment implements
android.view.View.OnClickListener {
public int mYear, mMonth, mDay;
public static final int DIALOG_ID = 0;
private Button btn;
private View dialogView;
public Dialog onCreateDialog(Bundle savedInstanceState) {
Context context = getActivity();
AlertDialog.Builder builder = new AlertDialog.Builder(context);
LayoutInflater inflater = LayoutInflater.from(context);
dialogView= inflater.inflate(R.layout.new_task_dialog, null);
builder.setView(dialogView)
;
btn =(Button) dialogView.findViewById(R.id.datePickerDialogButton);
showDialogOnButtonClick();
return builder.create();
}
public void showDialogOnButtonClick(){
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().showDialog(DIALOG_ID);
}
});
}
private DatePickerDialog.OnDateSetListener dpickerListener
= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
TextView dateDisplay = (TextView) getActivity().findViewById(R.id.dateDisplayBox);
mYear = year;
mMonth = monthOfYear;
mDay = dayOfMonth;
dateDisplay.setText(mYear + mMonth + mDay);
}
};
@Override
protected Dialog onCreateDialog(int id){
if(id == DIALOG_ID) {
return new DatePickerDialog(getActivity(), dpickerListener , mYear, mMonth, mDay);
}else{
return null;
}
}
@Override
public void onClick(View view) {
}
}
Liefert Ihre 'getActivity()' ** ** **? –