【问题标题】:popBackStack() not working on PreferenceFragmentpopBackStack() 不适用于 PreferenceFragment
【发布时间】:2016-09-24 07:31:53
【问题描述】:

我有一个AppCompatActivity 和不同的PreferenceFragments。我使用addToBackStack() 调用将fragments 添加到backstack,但是在使用popBackStack() 检索片段时,activity 不显示fragmentUI 未更新)但是getBackStackEntryCount() 随着popBackStack() 而减少称呼。可能是什么原因?

public class SettingsActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager()
            .beginTransaction()
            .replace(R.id.content_frame_settings, new SettingsPreferenceFragment1())
            .addToBackStack("SettingsPreferenceFragment1")
            .commit();
    }

    @Override
    public void onBackPressed() {
        if ( getFragmentManager().getBackStackEntryCount() > 0){
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

    public static class SettingsPreferenceFragment1 extends PreferenceFragment {
        ...
        ...
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_settings1);
            ...
            ...
        }

        @Override
            OnClick(View view){
                if(view == btnNext){
                    getFragmentManager()
                        .beginTransaction()
                        .replace(R.id.content_frame_settings, new SettingsPreferenceFragment2())
                        .addToBackStack("SettingsPreferenceFragment2")
                        .commit();
                }
            }
    }

    public static class SettingsPreferenceFragment2 extends PreferenceFragment {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.pref_settings2);
        }
    }
}

【问题讨论】:

  • 您不需要将活动中的第一个片段添加到后台堆栈。替换第一个片段的任何片段都需要返回堆栈。另外,您在哪里设置/覆盖onClick()?那不应该在设置活动中吗?

标签: android android-fragments preferencefragment


【解决方案1】:

我认为您正在使用 Support Fragment,如果是,那么您需要使用 getSupportFragmentManager 而不是 getFragmentManager

希望对你有帮助

【讨论】:

  • 感谢回复,但getSupportFragmentManager() 不支持PreferenceFragment。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-13
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多