【发布时间】:2016-09-24 07:31:53
【问题描述】:
我有一个AppCompatActivity 和不同的PreferenceFragments。我使用addToBackStack() 调用将fragments 添加到backstack,但是在使用popBackStack() 检索片段时,activity 不显示fragment(UI 未更新)但是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