Я делаю свое первое основное приложение для Android, и я пытаюсь показать диалог в ActionBarActivity
. Я создал подкласс DialogFragment:DialogFragment.show() throws NullPointerException
public class QuestionFragment extends DialogFragment {
private final String[] CHOICES = {"More than once per day","Once per day","Less often"};
public QuestionFragment() {
//Required empty constructor
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("How often do you take this medication?")
.setItems(CHOICES, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//options for int which go here
}
});
return builder.create();
}
}
Я пытаюсь использовать метод показа очень похожим образом, как учебники для разработчиков Android объяснить. Диалог должен придумать, когда кнопка нажата:
public void toAdd(View view) {
QuestionFragment dialog = new QuestionFragment();
dialog.show(dialog.getFragmentManager(),"question");
}
Когда я пытаюсь это, я получаю:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentTransaction android.app.FragmentManager.beginTransaction()' on a null object reference
at android.app.DialogFragment.show(DialogFragment.java:228)
at gianttine.rescription.TodayMeds.toAdd(TodayMeds.java:49)
...
Я также попытался изменить (dialog.getFragmentManager(),"question");
к (getFragmentManager(),"question");
, и я также попытался сделать объект FragmentManager
, прежде чем передать его в show()
.
Поскольку я новичок в разработке Android, у меня могут быть некоторые плохие варианты дизайна в этом коде, но я ищу, чтобы узнать, почему существует исключение и что мне нужно сделать для правильного отображения диалога.