8

我遵循了 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();
    }
}

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

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

有人可以帮助我吗?

4

3 回答 3

13

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

于 2011-11-03T14:41:34.733 回答
6

实际上,在您按照@Jacob 所说的那样做之后,您还必须确保从 Support 包中包含 DialogFragment 而不是从本机包中包含。

您可以通过导入来做到这一点,

import android.support.v4.app.DialogFragment;
于 2012-04-18T14:55:02.547 回答
5

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

import android.support.v4.app.DialogFragment;

我把它改成了这个,它起作用了:

import android.app.DialogFragment;
于 2013-05-27T06:23:43.667 回答