alertdialog的问题显示在片段android中

use*_*602 8 alert android dialog fragment android-alertdialog

我已经关注了android示例,但我有一个不全面的错误:

void showDialog() {
    DialogFragment newFragment = MyAlertDialogFragment.newInstance();
    newFragment.show(fm, "alert");
}

public static class MyAlertDialogFragment extends DialogFragment {
    public static MyAlertDialogFragment newInstance() {
        MyAlertDialogFragment frag = new MyAlertDialogFragment();
        return frag;
    }

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new AlertDialog.Builder(getActivity()).setTitle("test")
                .setMessage("bla bla bla").create();
    }
}
Run Code Online (Sandbox Code Playgroud)

newFragment.show(fm, "alert"); 给我一个错误:

DialogFragment类型中的方法show(FragmentManager,String)不适用于参数(FragmentManager,String)

有人可以帮帮我吗?

Jac*_*ips 13

问题是因为您需要使用支持包,FragmentManager但是FragmentManager在调用时您正在使用本机getFragmentManager().getSupportFragmentManager()初始化变量时尝试调用fm.


Tob*_*bio 6

实际上,在您执行@Jacob之后,您还必须确保从支持包中包含DialogFragment,而不是从本机包中包含.

你可以通过导入,

import android.support.v4.app.DialogFragment;
Run Code Online (Sandbox Code Playgroud)


Rya*_*n R 5

在我的情况下,我minSDK设置为14所以我不想使用支持包.我的问题是我输入的错误DialogFragment是这样的:

import android.support.v4.app.DialogFragment;
Run Code Online (Sandbox Code Playgroud)

我把它改成了它并且它有效:

import android.app.DialogFragment;
Run Code Online (Sandbox Code Playgroud)