微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 从Fragment调用DialogFragment

我试图从我的Fragment类调用DialogFragment.我有一个 ImageView,并希望在我设置的ImageView的onClickListener中调用我的DialogFragment类.

我在onClick中遇到错误,我设置的代码试图调用DialogFragment.

我在“show”上收到一条错误,说明“DialogFragment类型中的方法show(FragmentManager,String)不适用于参数(FragmentManager,String)”,并且“new Instance”上的错误表明“方法newInstance()未定义MyDialogFragment类型“

这是我的代码

@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
            MyDialogFragment dialog = MyDialogFragment.newInstance();
            dialog.show(getFragmentManager(),"fragmentDialog");
        }
    });

    return v;
}

DialogFragment类:

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;

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 = new MyDialogFragment;
        return f;
    }
}

解决方法

您没有名为newInstance的静态方法.在对话框片段中添加以下内容
public static MyDialogFragment newInstance() {
    MyDialogFragment f = new MyDialogFragment();
    return f;
    }

您可以在文档中找到更多信息和示例

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

原文地址:https://www.jb51.cc/android/309614.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐