java.lang.IllegalStateException: действие было уничтожено при создании диалогового окна выбора даты

Я пытаюсь создать диалоговое окно DatePicker из моей основной деятельности, используя DialogFragments. Я расширил класс DialogFragment и вернул новый datePickerDialog согласно

http://developer.android.com/guide/topics/ui/controls/pickers.html

Вот мой код класса:

import java.util.Calendar;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.DatePicker;

public class DatePickerFragment extends DialogFragment implements OnDateSetListener{

    @Override
    public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
        // TODO set the date for the alarm      
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        //set current date as default date
        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 New Instance of the datepicker dialog
        return new DatePickerDialog(getActivity(), this, year, month, day);
    }

}

У меня есть кнопка в основной деятельности для запуска диалогового окна:

public void setAlarm(View view){
        //TextView reminder_title  = (TextView) view.findViewById(R.id.reminder_title); 
        DialogFragment dateFragment = new DatePickerFragment();
        dateFragment.show(getFragmentManager(), "date picker");
    }

Однако, когда я пытаюсь нажать на кнопку, я получаю исключение "java.lang.IllegalStateException: действие было уничтожено" в строке ниже:

dateFragment.show(getFragmentManager(), "date picker");

Вот журнал активности:

06-08 15:45:48.261: E/AndroidRuntime(5489): FATAL EXCEPTION: main
06-08 15:45:48.261: E/AndroidRuntime(5489): Process: com.flamesavor.reme, PID: 5489
06-08 15:45:48.261: E/AndroidRuntime(5489): java.lang.IllegalStateException: Activity has been destroyed
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1345)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.app.BackStackRecord.commitInternal(BackStackRecord.java:597)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.app.BackStackRecord.commit(BackStackRecord.java:575)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.app.DialogFragment.show(DialogFragment.java:230)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at com.flamesavor.reme.ReMe.setAlarm(ReMe.java:67)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at com.flamesavor.reme.resources.ListViewAdapter.setAlarm(ListViewAdapter.java:60)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at com.flamesavor.reme.resources.ListViewAdapter$1.onClick(ListViewAdapter.java:48)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.view.View.performClick(View.java:4456)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.view.View$PerformClick.run(View.java:18462)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.os.Handler.handleCallback(Handler.java:733)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.os.Handler.dispatchMessage(Handler.java:95)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.os.Looper.loop(Looper.java:136)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at android.app.ActivityThread.main(ActivityThread.java:5102)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at java.lang.reflect.Method.invokeNative(Native Method)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at java.lang.reflect.Method.invoke(Method.java:515)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-08 15:45:48.261: E/AndroidRuntime(5489):     at dalvik.system.NativeStart.main(Native Method)

Любая помощь в этом будет очень признательна.

Спасибо.


person flamesavor    schedule 08.06.2014    source источник


Ответы (2)


Посмотрите на этот пример, возможно, он поможет вам найти правильное решение:

Как создать DatePicker с DialogFragment и FragmentManage

person Ultimo_m    schedule 08.06.2014
comment
Привет, Извините, это была ошибка с моей стороны. Ссылка помогла, но не решила проблему. Я все еще ищу решение. - person flamesavor; 18.06.2014
comment
Проблема та же, что и раньше или изменилась? - person Ultimo_m; 18.06.2014
comment
Проблема все та же. Я думаю, что по какой-то причине диалог не может получить контекст этого действия. Я попытаюсь получить текущую активность и посмотреть, что я получу. - person flamesavor; 21.06.2014
comment
Я предлагаю вам попробовать код по этой ссылке, а затем попытаться реализовать там свою работу. - person Ultimo_m; 22.06.2014

Сегодня столкнулся с похожей проблемой. Это было просто. Просто проверьте следующее при нажатии кнопки:

if (!datePickerDialog.isAdded()) {

          datePickerDialog.setStartDate(year, month, day);
          datePickerDialog.show(getFragmentManager(), DATEPICKER_TAG);
}
else
{
  //you can replace or add,,ur wish
}

Это оно

person Detoxic Spirit    schedule 12.06.2014
comment
Привет, я попробовал это решение, но все равно получаю ту же ошибку - person flamesavor; 15.06.2014