我的偏好活动有问题。
我已经创建了偏好屏幕和一个偏好活动。
在Android 4.2.2的手机上,它运行正常。
但在使用Android 5.0的Android Emulator上,它会因此错误崩溃:IllegalArgumentException: Invalid fragment for this activity.
这是因为这段代码?:
@Override
protected boolean isValidFragment(String fragmentName) {
return MyPreferenceFragment.class.getName().equals(fragmentName);
}
第二个首选项片段是MyExportPreferenceFragment ...... 如何在一项活动中同时使用它们?
感谢您的帮助
//编辑:找到一个解决方案,但也许它过于hacky ^^
@Override
protected boolean isValidFragment(String fragmentName) {
if(MyPreferenceFragment.class.getName().equals(fragmentName)) {
return MyPreferenceFragment.class.getName().equals(fragmentName);
}
else {
return MyExportPreferenceFragment.class.getName().equals(fragmentName);
}
}
这可以吗?或者这样做是危险的吗?
答案 0 :(得分:24)
在@Override
protected boolean isValidFragment(String fragmentName) {
return Fragment1.class.getName().equals(fragmentName) ||
Fragment2.class.getName().equals(fragmentName) ||
Fragment3.class.getName().equals(fragmentName) ||
Fragment4.class.getName().equals(fragmentName) ||
Fragment5.class.getName().equals(fragmentName);
}
MySettingsActivity.class
<preference-headers xmlns:android="http://schemas.android.com/apk/res/android">
<header
android:title="@string/one"
android:summary="@string/one_sum"
android:fragment="com.***.fragment1" />
</preference-headers>
Headers.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/category_basic">
<PreferenceScreen
android:icon="@drawable/ic_three"
android:fragment="com.***.fragment3"
android:title="@string/text"
android:summary="@string/text_sum"
android:key="@string/key" />
</PreferenceCategory>
</PreferenceScreen>
的preferences.xml
var material;
material = [
{
name: 'item 1'
}, {
name: 'item 2'
}, {
name: 'item 3'
}, {
name: 'item 4'
}, {
name: 'item 5'
}, {
name: 'item 6'
}
];
$('.random').click(function() {
var index;
this.materials = $('.materials');
index = Math.floor(Math.random() * material.length);
this.materials.text(material[index].name);
});