首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用我的警报DialogFragment作为结果?

如何使用我的警报DialogFragment作为结果?
EN

Stack Overflow用户
提问于 2013-12-13 00:45:23
回答 2查看 303关注 0票数 1

最近,我创建了一个标准列表DialogFragment,用于在我的活动中构建一个AlertDialog,这可以看作是这里的答案:

当屏幕旋转时,重新创建AlertDialog的最佳方法是什么?

现在,我想在我的活动中为3种不同的"Pop Up“选择列表重用这个片段。对于这三个按钮中的每一个,我需要标识调用按钮,以确定在选择列表中的项时要采取的操作。

实现这一目标的最佳途径是什么?

目前,我认为我需要将调用按钮ID传递给DialogFragment,然后在对话框完成时将其传递回活动并得到结果。是否有更好的方法来实现这一目标?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 01:05:21

我认为实现您所要实现的目标的最简单的方法可能是在您的DialogFragment中只包含三个不同的侦听器,然后每个都有设置器。然后,当您将警报对话框构建为一个片段时,您可以定义每个侦听器在调用方法中的onClick方法。所以就像这样:

代码语言:javascript
代码运行次数:0
运行
复制
protected DialogInterface.OnClickListener mListener1;
protected DialogInterface.OnClickListener mListener2;
protected DialogInterface.OnClickListener mListener3;

public void setListener1(final YourDialogFragment.OnClickListener passedListener) {
    mListener1 = new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            listener.onClick(getActivity(), dialog, which);
        }
    };
}

然后在调用DialogFragment的代码中调用以下内容:

代码语言:javascript
代码运行次数:0
运行
复制
// Building the Dialog Fragment here

YourDialogFragment.setListener1(new YourDialogFragment.OnClickListener() {
    @Override
    public void onClick(FragmentActivity activity, DialogInterface dialog, int which) {
        // Whatever you want to happen when you click goes here
    }
});

理想情况下,您可以让某种类型的助手只接受参数,这样就不会显式地从活动中调用set方法,但这才是其中的要点。

票数 0
EN

Stack Overflow用户

发布于 2013-12-13 04:55:17

我建议您从另一个片段中显示对话框片段,在其中您可以实现onClick侦听器,并使用setTargetFragment()告诉对话框片段它正在与谁一起工作。

代码语言:javascript
代码运行次数:0
运行
复制
dialogFragment.setTargetFragment(this, 0);

并使用getTargetFragment()从DialogFragment获取父片段。

下面是示例程序中的一些代码片段。

代码语言:javascript
代码运行次数:0
运行
复制
       // Retrieve the progress bar from the target's view hierarchy.
       mProgressBar = (ProgressBar)getTargetFragment().getView().findViewById(
                R.id.progress_horizontal);

还可以在setRetainInstance(真) ()方法中使用onCreate()方法告诉框架,在配置更改时尽量保留此片段。

这个答案得到更多的想法,希望这有帮助..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20557192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档