如何从PreferenceFragment显示对话框?

时间:2013-07-25 20:41:13

标签: android preferences android-support-library

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

  

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

问题是我似乎无法从此片段引用 android.support.v4.app.FragmentManager 。负责这个片段的活动从FragmentActivity延伸,但显然这还不够。我也试过调用 getSupportFragmentManager(),但这给了我这个错误:

  

无法解析方法'getSupportFragmentManager()'

我该如何做到这一点?

以下是一些代码:

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:5)

试试这个:

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

您始终可以调用保存Fragment的Activity等于它的类型。

编辑:

我错了,PreferenceFragment不包含在支持库中,只能在Android 3.0及更高版本中使用。这个post可以帮助处理这种情况。