首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用DialogFragment

调用DialogFragment
EN

Stack Overflow用户
提问于 2013-10-09 09:57:10
回答 4查看 14.1K关注 0票数 1

我已经成功地设置了Dialog片段类,现在我想从我设置的主片段类中调用它。

我试过使用多个代码来调用它,但是我不断地收到错误和崩溃。

我需要在我的onClick中添加什么来调用我的对话框片段?

提前感谢!

主要片段类别:

代码语言:javascript
复制
    @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) {


            //Here


        }

    });

    return v;
}

对话片段:

代码语言:javascript
复制
class MyDialogFragment extends DialogFragment {
Context mContext;

public MyDialogFragment() {
    mContext = getActivity();
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
            mContext);
    alertDialogBuilder.setTitle("Set Wallpaper?");
    alertDialogBuilder.setMessage("Are you sure?");
    // null should be your on click listener
    alertDialogBuilder.setPositiveButton("OK", null);
    alertDialogBuilder.setNegativeButton("Cancel",
            new DialogInterface.OnClickListener() {

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

    return alertDialogBuilder.create();
}

public static MyDialogFragment newInstance() {
    MyDialogFragment f = new MyDialogFragment();
    return f;
}

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-09 10:02:44

在这里,解决方案:

代码语言:javascript
复制
 @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 = MyDialogFragment.newInstance();
            dialog.show(getActivity().getFragmentManager(), "MyDialogFragment");
        }

    });

    return v;
}
票数 4
EN

Stack Overflow用户

发布于 2013-10-09 10:01:29

尝试以下几点

代码语言:javascript
复制
FragmentTransaction ft = ((FragmentActivity)getActivity()).getSupportFragmentManager().beginTransaction();
MyDialogFragment dialog = MydialogFragment.newInstance();
dialog.show(ft, "Tag");

这里还有一个很棒的补习

票数 2
EN

Stack Overflow用户

发布于 2013-10-09 10:03:05

在您的Dialog片段中,已经有了下面的内容,它返回对话框框架的实例。

代码语言:javascript
复制
public static MyDialogFragment newInstance() {
    MyDialogFragment f = new MyDialogFragment();
    return f;  
}

所以,试试下面的方法

代码语言:javascript
复制
DialogFragment newFragment = MyDialogFragment.newInstance();// call the static method
newFragment.show(getActivity().getFragmentManager(), "dialog");

看看这些文档,有一个例子

http://developer.android.com/reference/android/app/DialogFragment.html

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

https://stackoverflow.com/questions/19268779

复制
相关文章

相似问题

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