6

当我点击 PreferenceFragment 中的 Preference 时,我试图调出 DialogFragment。不幸的是,当我在 DialogFragment.show( ) 中调用 getFragmentManager()时,我收到以下错误:

无法解析方法“show(android.app.FragmentManager,java.lang.String)”

问题是我似乎无法从此片段中引用android.support.v4.app.FragmentManager 。负责这个fragment的activity继承自FragmentActivity,但显然这还不够。我也尝试调用getSupportFragmentManager(),但这给了我这个错误:

无法解析方法“getSupportFragmentManager()”

我怎样才能使这项工作?

这是一些代码:

gPrefAcknowledgements.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener()
{
    @Override
    public boolean onPreferenceClick(Preference preference)
    {
        DialogAcknowledgements dialogAck = new DialogAcknowledgements();
        dialogAck.show(getFragmentManager(), "acknowledgements");
        return true;
    }
});
4

2 回答 2

9

基于史蒂夫的回答,我还需要将 DialogFragment 设置为从android.app.DialogFragment(而不是 android.support.v4.app.DialogFragment)导入。该库中的 show() 函数要求提供一个 android.app.FragmentManager,我可以通过调用 getFragmentManager() 来提供它,就像我在问题中发布的代码中所做的那样。

于 2013-07-25T22:42:00.763 回答
5

尝试这个:

dialogAck.show(getActivity().getFragmentManager(), "acknowledgements");

您始终可以调用包含与其类型相同的 Fragment 的 Activity。

编辑:

我错了,PreferenceFragment 不包含在支持库中,仅适用于 Android 3.0 及更高版本。这篇文章可以帮助处理这种情况。

于 2013-07-25T21:25:24.527 回答