片段内的getLayoutInflater()

Ski*_*ᴉʞS 2 android android-fragments

我想在Fragment中实现一个Alert Dialog.
我创建了一个名为的新类MyDialog,其中包含:

    public class MyDialog {

    public static AlertDialog.Builder create(final Context context, final LayoutInflater layoutInflater, final String title, final String content) {
        View view = layoutInflater.inflate(R.layout.userdialog, null);
        ((TextView)view.findViewById(R.id.textViewTitleDialog)).setText(title);
        ((TextView)view.findViewById(R.id.textViewContentDialog)).setText(content);
        return new AlertDialog.Builder(context).setView(view);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我想要使用它时,我称之为:

AlertDialog.Builder myDialog = MyDialog.create(this, getLayoutInflater(), R.string.cambioemail, R.string.nuevoemail);
            myDialog.setPositiveButton(R.string.canviaruserdialog, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            })
                    .setNegativeButton(R.string.cancelaruserdialog, null)
                    .show();
Run Code Online (Sandbox Code Playgroud)

片段的完整代码:

    public class ConfiguracionFragment extends Fragment implements View.OnClickListener {

    public ConfiguracionFragment() {
    }

    TextView tvEmail,tvPswd;

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

        View rootView = inflater.inflate(R.layout.fragment_pages, container, false);
        tvEmail = (TextView) rootView.findViewById(R.id.tvEmailChange);
        tvPswd = (TextView) rootView.findViewById(R.id.tvPswdChange);
        tvEmail.setOnClickListener(this);
        tvPswd.setOnClickListener(this);

        return rootView;
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()) {
            case R.id.tvEmailChange:
               AlertDialog.Builder myDialog = MyDialog.create(this, getLayoutInflater(), R.string.cambioemail, R.string.nuevoemail);
                myDialog.setPositiveButton(R.string.canviaruserdialog, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {

                    }
                })
                        .setNegativeButton(R.string.cancelaruserdialog, null)
                        .show();
                break;

            case R.id.tvPswdChange:
                     Intent intent2 = new Intent();
                        intent2.setClass(getActivity(), UserDialog.class);
                        intent2.putExtra("PSWD", "PSWD");
                        startActivity(intent2);


                break;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我试图得到的东西LayoutInflatergetActivity().getLayoutInflater(),但它不起作用.

也许我弄明白了,或者逻辑不正确,但我不知道为什么我做错了.

这是错误:

在此输入图像描述

编辑

    Error:(40, 69) error: method getLayoutInflater in class Fragment cannot be applied to given types;
required: Bundle
found: no arguments
reason: actual and formal argument lists differ in length
Run Code Online (Sandbox Code Playgroud)

anu*_*ake 5

public class ConfiguracionFragment extends Fragment implements View.OnClickListener {

Bundle savedInstanceState;
Context context;

public ConfiguracionFragment(Context context) {
    this.context = context;
}

TextView tvEmail,tvPswd;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    this.savedInstanceState =savedInstanceState;
    View rootView = inflater.inflate(R.layout.fragment_pages, container, false);
    tvEmail = (TextView) rootView.findViewById(R.id.tvEmailChange);
    tvPswd = (TextView) rootView.findViewById(R.id.tvPswdChange);
    tvEmail.setOnClickListener(this);
    tvPswd.setOnClickListener(this);

    return rootView;
}

@Override
public void onClick(View v) {

    switch (v.getId()) {
        case R.id.tvEmailChange:
           AlertDialog.Builder myDialog = MyDialog.create(context, getLayoutInflater(savedInstanceState), R.string.cambioemail, R.string.nuevoemail);
            myDialog.setPositiveButton(R.string.canviaruserdialog, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            })
                    .setNegativeButton(R.string.cancelaruserdialog, null)
                    .show();
            break;

        case R.id.tvPswdChange:
                 Intent intent2 = new Intent();
                    intent2.setClass(getActivity(), UserDialog.class);
                    intent2.putExtra("PSWD", "PSWD");
                    startActivity(intent2);


            break;
    }

}
Run Code Online (Sandbox Code Playgroud)

}