在PreferenceFragment中使用getFragmentSupport Manager

时间:2019-05-30 11:16:57

标签: java android preferences

我在PreferenceFragment扩展类中找到了要使用的该库,我的问题是无法解析getSupportFragmentManager。 我的问题是当扩展PreferenceFragment时如何显示该片段

我尝试更改为getFragmentManager,但无法正常工作

public class PreferencesFragment extends PreferenceFragment {

 final Preference currencyPreference = findPreference(getResources().getString(R.string.setting_category_currency_key));
        currencyPreference.setOnPreferenceClickListener(preference -> {
            //selectCurrencyDialog = new SelectCurrencyFragment();
            //selectCurrencyDialog.show(((SettingsActivity) getActivity()).getSupportFragmentManager(), "SelectCurrency");

            CurrencyPicker picker = CurrencyPicker.newInstance("Select Currency");  // dialog title
            picker.setListener((name, code, symbol, flagDrawableResID) -> {
                // Implement your code here
            });
            picker.show(getSupportFragmentManager(), "CURRENCY_PICKER");

            return false;
        });

}

此行有错误

  

getSupportFragmentManager()

picker.show(getSupportFragmentManager(), "CURRENCY_PICKER");

3 个答案:

答案 0 :(得分:0)

使用getChildFragmentManager()代替getSupportFragmentManager()

答案 1 :(得分:0)

片段中使用-

picker.show(getChildFragmentManager(), "CURRENCY_PICKER");

活动中使用-

picker.show(getSupportFragmentManager(), "CURRENCY_PICKER");

答案 2 :(得分:0)

您是否尝试过将getSupportFragmentManager()替换为PreferencesFragment.this.getActivity().getSupportFragmentManager()

这可以通过返回PreferencesFragment的父活动并获取其片段管理器来实现。如果您的上级活动扩展了支持库中的活动,则您应该改用PreferencesFragment.this.getActivity().getFragmentManager()