当我在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;
}
});
答案 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可以帮助处理这种情况。