示出一个片段时的DatePicker崩溃

问题描述 投票:0回答:1

我试图使用日期选择器窗口小部件在这里的文档示例:docs

然而,当我打电话newFragment.show(getSupportFragmentManager() “日期选择器”);

应用程序崩溃和堆栈跟踪显示以下内容:

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)

date picker fragment.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");
}
android datepicker illegalstateexception
1个回答
2
投票

在同一行什么@Mike说,条款类不能是一个子类的活动。移动方法自身的实用工具类,然后调用由要么通过上下文或传递片段管理器的方法。

事情是这样的:

public void showDatePickerDialog(View v, AppCompatActivity context) {
        DialogFragment newFragment = new DialogFragment();
        newFragment.show(context.getSupportFragmentManager(), "TAG");
}

另外,使用FragmentManager

public void showDatePickerDialog(View v, FragmentManager fm) {
        DialogFragment newFragment = new DialogFragment();
        newFragment.show(fm, "datePicker");
}
© www.soinside.com 2019 - 2024. All rights reserved.