【发布时间】:2019-02-08 08:04:03
【问题描述】:
我正在尝试在此处的文档示例中使用日期选择器小部件: docs
但是当我调用 newFragment.show(getSupportFragmentManager(), "datePicker");
应用程序崩溃和堆栈跟踪显示如下:
FATAL EXCEPTION: main Process: com.wgu.andrey.clp1, PID: 8125
java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1864)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:650)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:609)
at android.support.v4.app.DialogFragment.show(DialogFragment.java:143)
at com.wgu.andrey.clp1.Terms.showDatePickerDialog(Terms.java:67)
DatePickerFragment.java
public class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
}
}
Terms.java
public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
}
【问题讨论】:
-
你确定你是从主线程调用
show()吗? (用户界面线程)。另外,扩展FragmentActivity而不是Activity。 -
请发布您的 onCreateDialog 方法的代码以及您调用 newFragment.show(getSupportFragmentManager(), "datePicker");的方法;
-
@Sevastyan 我正在扩展 MainActivity,它扩展了 AppCompatActivity。我需要一些导航栏才能工作。
-
你是怎么打电话给
showDatePickerDialog()的?Terms是当前运行的Activity吗?或者它是某种帮助/实用程序类? -
@MikeM。条款是一个实用类
标签: android datepicker illegalstateexception