片段已经补充说:DateDialog [英] Fragment already added: DateDialog
问题描述
我必须让我的 EDITTEXT
点击。一旦它被点击,它就会显示的DatePicker对话框
。
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.information);
日期=(EditText上)findViewById(R.id.date);
对话框=新DateDialog();
date.setOnClickListener(本);
公共无效的onClick(查看为arg0){
FragmentTransaction英尺= getFragmentManager()的BeginTransaction()。
dialog.show(英尺的DatePicker);
}
公共静态类DateDialog扩展android.app.DialogFragment实现DatePickerDialog.OnDateSetListener {
公共DateDialog(){}
公共对话onCreateDialog(包savedInstanceState)
{
最后的日历C = Calendar.getInstance();
INT年= c.get(Calendar.YEAR);
INT月= c.get(Calendar.MONTH);
INT天= c.get(Calendar.DAY_OF_MONTH);
返回新DatePickerDialog(getActivity(),这,年,月,日);
}
公共无效onDateSet(DatePicker的观点,INT年,月整型,INT日)
{
串日期1 =日+ - +(月+ 1)+ - +年;
date.setText(DATE1);
DATE2 = date.getText()的toString()。
返回 ;
}
}
如果我不小心双击 EDITTEXT
,应用程序崩溃,并显示片段已经添加
如下错误。
10月11日至26日:16:04.745 2348年至2348年/? E / AndroidRuntime:致命异常:主要
工艺:com.example.project.myapplication,PID:2348
java.lang.IllegalStateException:碎片已添加:DateDialog {d1ca446#0的DatePicker}
在android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1219)
在android.app.BackStackRecord.run(BackStackRecord.java:715)
在android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
在android.app.FragmentManagerImpl $ 1.运行(FragmentManager.java:482)
在android.os.Handler.handleCallback(Handler.java:739)
在android.os.Handler.dispatchMessage(Handler.java:95)
在android.os.Looper.loop(Looper.java:148)
在android.app.ActivityThread.main(ActivityThread.java:5417)
在java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
有谁知道如何解决这一问题?谢谢
应用程序崩溃,并显示片段已经添加如下错误
由于打电话到显示
方法。检查的对话框中显示或不显示的话则丢弃的点击事件,否则显示对话框:
对话dialogFrg = dialog.getDialog();
如果(dialogFrg =空&安培;!&安培; dialogFrg.isShowing()){
//无需调用dialog.show(FT的DatePicker);
} 其他 {
//调用dialog.show(FT的DatePicker);
}
或使用也可以使用布尔
标记就像一个开关,检查对话框中显示或不通过标志的true / false
。
I have make my editText
clickable. Once it is clicked, it will display DatePicker dialog
.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.information);
date = (EditText) findViewById(R.id.date);
dialog=new DateDialog();
date.setOnClickListener(this);
public void onClick(View arg0) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
dialog.show(ft, "DatePicker");
}
public static class DateDialog extends android.app.DialogFragment implements DatePickerDialog.OnDateSetListener {
public DateDialog() {}
public Dialog onCreateDialog(Bundle savedInstanceState)
{
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);
return new DatePickerDialog(getActivity(),this,year,month,day);
}
public void onDateSet(DatePicker view,int year, int month, int day)
{
String date1=day+"-"+(month+1)+"-"+year;
date.setText(date1);
date2= date.getText().toString();
return ;
}
}
If I accidentally double click on the editText
, the app crashed and shows Fragment already added
error as below.
11-26 10:16:04.745 2348-2348/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.project.myapplication, PID: 2348
java.lang.IllegalStateException: Fragment already added: DateDialog{d1ca446 #0 DatePicker}
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1219)
at android.app.BackStackRecord.run(BackStackRecord.java:715)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:482)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Does anyone know how to fix this ? Thanks
the app crashed and shows Fragment already added error as below
Because make a call to show
method. check for is Dialog is showing or not if showing then discard the click event otherwise show Dialog:
Dialog dialogFrg=dialog.getDialog();
if(dialogFrg!=null && dialogFrg.isShowing()) {
// no need to call dialog.show(ft, "DatePicker");
} else {
// call dialog.show(ft, "DatePicker");
}
or use can also use a boolean
flag like a switch to check Dialog is showing or not by making flag true/false
.
这篇关于片段已经补充说:DateDialog的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!