我在Android中加载PreferenceFragment
时遇到问题。在这一点上,它是一个非常基本的实现,我希望稍后在它工作时进行扩展。
问题是导航到SettingsFragment
后只显示第一个首选项。
我没有收到任何错误,但是logcat向我展示了这个:
W/PathParser: Points are too far apart 4.000000596046461
我搜索了这个,但没有任何有用的解决方案。
代码如下:
通过NavigationDrawer进行MainActivity导航
navigate()
是使用FragmentManager
case R.id.nav_settings:
navigate(new SettingsFragment(), "settingsFragment", false);
break;
SettingsFragment
public class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public SettingsFragment() { }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) { }
}
prefences.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="switch_notifications"
android:title="Notifications"
android:summary="Receive notifications"
android:defaultValue="true" >
</SwitchPreference>
<CheckBoxPreference
android:key="switch_notifications2"
android:title="Notifications"
android:summary="Receive notifications"
android:defaultValue="true" >
</CheckBoxPreference>
</PreferenceScreen>
截图
左:实际输出|右:预览
提前致谢!
尼尔斯
答案 0 :(得分:2)
很抱歉,这可能不是一个答案(暂无法发表评论),更像是洞察力。 只是想指出它在我的设备(oneplus3)上运行正常,并且在nexus 5模拟器中似乎也正常显示。
我的猜测:可能是某种程度上父活动限制了片段的输出?例如,如果我在父级上设置足够高的paddingBottom,我会得到与左图中类似的结果。
如果没有,它可能是一些奇怪的设备特定错误。也许你可以提供有关设备,屏幕尺寸,Android版本等的更多信息。
答案 1 :(得分:2)
找到解决方案:
包含NestedScrollView
的{{1}}的设置应为FrameLayout
。另外,FrameLayout的高度应设置为wrap_content。
android:fillViewport="true"