我在尝试扩充自定义首选项时继续收到错误消息。我尝试了多种方法,但无法正常工作。
public class SettingsFragment extends PreferenceFragment {
final static String TAG = "Preferance Fragment";
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
首选项.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="notifications_on"
android:title="Notifications"
android:summary="Display light/group control in notification bar."
android:defaultValue="true" />
<ListPreference
android:key="light_transition_speed"
android:title="Light Transition"
android:summary="Change the speed at which light changes to new settings"
android:dialogTitle="Light Transition Speed"
android:entries="@array/light_transition_speed"
android:entryValues="@array/light_transition_speed"
android:defaultValue="Medium" />
<com.mackeytech.test.notifyPreferences
android:key="tester"/>
</PreferenceScreen>
这是 notifiyPreferences 文件:
public class notifyPreferences extends Preference {
//Tag used for logcat
String TAG = "notifyPreferances";
//Constructor
notifyPreferences(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.preference_line_view);
}
}
这里是布局文件preference_line_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/widget_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@android:id/title"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title" />
<TextView
android:id="@android:id/summary"
style="@android:style/TextAppearance.DeviceDefault.SearchResult.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Summary" />
</LinearLayout>
我在构造函数中为自定义首选项分配它,但我尝试通过分配布局在 xml 文件中进行分配。我也刚刚使用了一个空文件,并尝试在 xml 文件中执行标题、键和摘要,但是当我在首选项文件中有包 com.mackeytech.test.notifyPreferences 时,我无法加载 preferenceFragment。
这是我看到的错误:
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: FATAL EXCEPTION: main
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: Process: com.mackeytech.Simplicity, PID: 5321
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mackeytech.Simplicity/com.mackeytech.test.SettingsActivity}: android.view.InflateException: Binary XML file line #19: Error inflating class com.mackeytech.test.notifyPreferences
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.ActivityThread.access$800(ActivityThread.java:144)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:135)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5221)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class com.mackeytech.test.notifyPreferences
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.GenericInflater.createItem(GenericInflater.java:386)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.GenericInflater.createItemFromTag(GenericInflater.java:430)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.GenericInflater.rInflate(GenericInflater.java:481)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.GenericInflater.inflate(GenericInflater.java:326)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.GenericInflater.inflate(GenericInflater.java:263)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:272)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.preference.PreferenceFragment.addPreferencesFromResource(PreferenceFragment.java:299)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at com.mackeytech.test.SettingsFragment.onCreate(SettingsFragment.java:33)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.Fragment.performCreate(Fragment.java:2031)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:863)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1045)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1147)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2116)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.Activity.onCreateView(Activity.java:5286)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.support.v7.app.ActionBarActivityDelegateBase.setContentView(ActionBarActivityDelegateBase.java:240)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:102)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at com.mackeytech.test.SettingsActivity.onCreate(SettingsActivity.java:14)
11-21 13:49:00.925 5321-5321/? E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5937)
最佳答案
您可能使用了错误类型的 Preference
。检查您的 PreferenceFragment
是 android.preference.PreferenceFragment
还是 android.support.v14.preference.PreferenceFragment
。然后将您的 Preference
类型与您的 PreferenceFragment
类型相匹配。
关于android - 无法在 preferenceFragment 中膨胀自定义首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33861344/