android - 启动结果对话框以将值返回到主要 Activity

标签 android dialog fragment

几个小时以来,我一直在努力解决这个问题。

我有一个主要的 Fragment 类,然后从我从那个类中的 ImageView 设置的 onClick 开始,我用一个简单的"is"或“取消”选项启动一个对话框 fragment 。

我该如何做到这一点,以便当用户单击“确定”时,它会将结果代码发送回我的主要 fragment ,告诉它运行一些代码(在我的例子中,我正在设置壁纸)。

这听起来很简单,但似乎无法弄清楚。提前致谢。

Onclick 我想以某种方式将结果返回到:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    final View v = inflater.inflate(R.layout.image_detail_fragment,
            container, false);

    mImageView = (RecyclingImageView) v.findViewById(R.id.imageView);
    mImageView.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {

            MyDialogFragment dialog = new MyDialogFragment();
            dialog.show(getActivity().getFragmentManager(),
                    "MyDialogFragment");

        }

        public void onDialogOKPressed() {

    ((ImageDetailFragment) (DialogFragment.this.getParentFragment()))
                    .onDialogOKPressed();
            dismiss();

        }
    });

    return v;
}

对话框类:

class MyDialogFragment extends DialogFragment {
    private Button ButtonOk;
    private Button ButtonCancel;

    public MyDialogFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.prompt, container);
        ButtonOk = (Button) view.findViewById(R.id.button1);
        ButtonCancel = (Button) view.findViewById(R.id.button2);
        getDialog().setTitle("Set Wallpaper?");

        ButtonOk.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                                                ((MyDialogFragment)(DialogFragment.this.getActivity())).onDialogOKPressed();
                dismiss();


            }

        });

        ButtonCancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                MyDialogFragment.this.dismiss();

            }
        });

        return view;

    }
}

最佳答案

在您的 Activity 中,添加一个响应按下 OK 按钮的方法,例如 public void onDialogOKPressed()。然后,在 DialogFragment 中确定按钮的 onClickListener 中,执行以下操作:

public void onClick(View v){
    ((MyActivity)(DialogFragment.this.getActivity())).onDialogOKPressed();
    dismiss();
}

或者将新方法放入您的主要 fragment 中并执行此操作:

public void onClick(View v){
    ((MyMainFragment)(DialogFragment.this.getParentFragment())).onDialogOKPressed();
    dismiss();
}

关于android - 启动结果对话框以将值返回到主要 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296687/

相关文章:

android - 当 phonegap 应用程序通过 Geolocation API 在后台运行时,在特定时间间隔后获取设备位置

java - 加密和解密字符串

android - 在 api 21 下将主题应用于对话框时出现奇怪的行为

android - FragmentPagerAdapter.getItem (int) 显示错误的 Fragment

Android如何在使用gradle构建期间从外部文件夹添加可绘制对象

android - AndEngine GLES2 可以在 Android 2.1 update 1 上运行吗?

mvvm - Silverlight MVVM IEditableObject 对话框

windows - 如何以编程方式向该对话框添加项目?

java - findViewById 在 Fragment 而不是在 (On)CreateView

android - appcompat_v7 和 fragment_main.xml?