【问题标题】:How do I get a DatePicker Fragment to notify Activity that fragment has been dismissed?如何获取 DatePicker 片段以通知 Activity 该片段已被解除?
【发布时间】:2015-10-26 02:41:17
【问题描述】:

当用户从片段中的 DatePicker 对话框中选择一个日期时,该对话框和片段将被关闭。我希望能够通知发起活动,以便它可以运行祝酒词。我宁愿不向片段添加代码,因为它已经在项目的许多其他地方使用。

当前代码的问题是 toast 会在片段对话框(DatePicker)创建后立即运行。关于如何解决的任何想法?

活动文件:

...
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
Toast saveToast = Toast.makeText(this, "Now Click the Save Button", Toast.LENGTH_LONG);
saveToast.show();

【问题讨论】:

    标签: android android-fragments datepicker


    【解决方案1】:

    在您的片段实例中添加这样的代码...

    DatePickerFragment newFragment = new DatePickerFragment();
    newFragment.setCallBack(ondate);
    newFragment.show(getSupportFragmentManager(), "datePicker");
    

    并将 onDate 初始化为 this

    DatePickerDialog.OnDateSetListener ondate = new DatePickerDialog.OnDateSetListener()
    {
        @Override
        public void onDateSet(DatePicker dp, int selectedYear,int selectedMonth, int selectedDay)
        {
             Calendar c = Calendar.getInstance();
             c.set(selectedYear, selectedMonth, selectedDay);
             String strDate = formatter.format(new Date(c.getTimeInMillis()));
             // here you can add toast or any thing
        }
    };
    

    【讨论】:

    • 请参阅我上面提到的问题:“我宁愿不向片段添加代码,因为它已经在项目的许多其他地方使用。”关于如何在 Activity 而不是片段中做的任何想法?
    • 此代码您需要在活动中执行。在活动中,您正在调用片段来显示。你只需要通过回调......你会得到结果。所以在你的活动中你会得到这个结果。
    • 好的,那么ondate代码就是activity的回调?
    • 是的,片段实例处于活动状态,然后当您从片段中选择日期时,将调用此回调。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    相关资源
    最近更新 更多