我想从我的主Activity使用DialogFragments
创建一个DatePicker对话框。我已经扩展了DialogFragment类,并返回新datePickerDialog按java.lang.IllegalStateException:在创建日期选择器对话框时活动已被破坏
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);
}
}
我对主Acivity一个按钮来触发对话框:
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:Activity has been destroyed”异常在bel流线:
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)
任何帮助将非常感激。
谢谢。
嘿感谢,这使得它完全清楚。 – flamesavor
你为什么删除我的答案是正确的? –
嗨,对不起,这是我的错误。链接有帮助,但没有解决问题。我仍在寻找解决方案。 – flamesavor