Я недавно разделил свой проект и создал проект библиотеки и основной проект. Имея экран настроек с настраиваемыми атрибутами, я удалил настройки с настраиваемыми атрибутами из моего файла preferences.xml, поместил их в свои собственные XML-файлы, включил их обратно в файл preferences.xml и переопределил отдельные файлы в основном проекте ( Процесс подробно описан в ответе на другой вопрос здесь .
Проект собран и запущен правильно. Тем не менее, я получаю RuntimeException всякий раз, когда я пытаюсь открыть экран настроек. Удаление префов с помощью пользовательских атрибутов устраняет проблему, поэтому я проследил ее до конца. К сожалению, в этом исключении нет полезной информации.
attrs.xml (существует в проекте lib)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="numberpickerPref">
<attr name="maxValue" format="integer" />
<attr name="minValue" format="integer" />
</declare-styleable>
</resources>
preferences.xml (также в проекте lib)
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/pref_VibrationSettingsTitle">
<CheckBoxPreference android:key="@string/pref_vibrateFlagKey"
android:title="@string/pref_VibrateTitle"
android:summary="@string/pref_VibrateSummary"
android:defaultValue="false" />
<include layout="@layout/pref_vibrate_on" />
<include layout="@layout/pref_vibrate_off" />
</PreferenceCategory>
</PreferenceScreen>
pref_vibrate_off.xml (определено как в lib, так и в основных проектах) (только diff - это мое пространство имен, одно указывает на lib, другое - на главный проект)
<?xml version="1.0" encoding="utf-8"?>
<!-- Stupid workaround because Android still has a bug where custom attributes in a library cause the executable project
problems when building:
/3395450/pomogite-s-polzovatelskimi-atributami-prosmotra-v-proekte-biblioteki-android -->
<com.me.numberpicker.NumberPickerPreference
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:my="http://schemas.android.com/apk/res/com.me.myapp.lib"
android:key="@string/pref_vibrateOffPeriodKey"
android:title="@string/pref_VibrateOffTitle"
android:summary="@string/pref_VibrateOffSummary"
my:maxValue="@string/MaxVibratorOffPeriodInS"
my:minValue="@string/MinVibratorOffPeriodInS"
android:defaultValue="@string/DefaultVibratorOffPeriodInS" />
MyPreferencesActivity.java
public class MegalarmPreferencesActivity extends PreferenceActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Все строки правильно определены в проекте lib.
Если я что-то упустил, дайте мне знать, пожалуйста. Настройки работали нормально, пока я не разделил свой проект на lib и main.
Большое спасибо!
Шон