为什么API28个平台资源不可用?
Why are API 28 platform resources not available?
TL;DR:
这一行编译:
int resid = android.R.layout.preference_category;
但是这一行没有:
int resid = android.R.layout.preference;
错误是"cannot find symbol variable preference"。但是这两个资源在Sdk\platforms\android-28\data\res\layout
目录下明明是可用的!
为什么会这样?
背景
我可以(在 IDE 中)导航到 preference_category
资源,果然,preference.xml
布局就在它旁边,还有大约一千种其他布局同样,也不会编译。
我的build.gradle(摘录):
compileSdkVersion 28
defaultConfig {
minSdkVersion 18
targetSdkVersion 26
}
我最近将我的应用程序切换到了 AndroidX。大多数情况下,一切都进行得很顺利,只是我注意到我的偏好有了新的视觉风格。我不在乎,除了我有 "subclassed" preference.xml
通过复制原始 Android 布局,进行微不足道的更改,然后在我的 prefs.xml
中指定该布局,例如:
...
<androidx.preference.CheckBoxPreference
android:key="@string/pref_audio"
android:title="Audio"
android:defaultValue="false"
android:layout="@layout/my_custom_preference"
/>
...
我以这种方式处理的首选项看起来仍然像以前一样——在我切换到 AndroidX 之前它们看起来的样子。但是所有其他偏好现在看起来都大不相同了。
我回到API28级文件夹,查看Android原来的preference.xml
的内容,看看有没有变(因为我原来copied/subclassed 它)。它没有!然而,偏好的样式已经改变。
为了排除故障,我尝试验证 android.R.layout.preference
是否确实指向我正在查看的资源,这导致我出现了上述编译错误。
只是不要使用框架的首选项(包括资源 android.R.layout.preference_category
),但 androidx.preference. This also features a new one PreferenceManager, which should be used instead. Mixing up android.preference
with androidx.preference
may lead to unexpected results. Once posted one custom 可能是一个合适的起点。
TL;DR:
这一行编译:
int resid = android.R.layout.preference_category;
但是这一行没有:
int resid = android.R.layout.preference;
错误是"cannot find symbol variable preference"。但是这两个资源在Sdk\platforms\android-28\data\res\layout
目录下明明是可用的!
为什么会这样?
背景
我可以(在 IDE 中)导航到 preference_category
资源,果然,preference.xml
布局就在它旁边,还有大约一千种其他布局同样,也不会编译。
我的build.gradle(摘录):
compileSdkVersion 28
defaultConfig {
minSdkVersion 18
targetSdkVersion 26
}
我最近将我的应用程序切换到了 AndroidX。大多数情况下,一切都进行得很顺利,只是我注意到我的偏好有了新的视觉风格。我不在乎,除了我有 "subclassed" preference.xml
通过复制原始 Android 布局,进行微不足道的更改,然后在我的 prefs.xml
中指定该布局,例如:
...
<androidx.preference.CheckBoxPreference
android:key="@string/pref_audio"
android:title="Audio"
android:defaultValue="false"
android:layout="@layout/my_custom_preference"
/>
...
我以这种方式处理的首选项看起来仍然像以前一样——在我切换到 AndroidX 之前它们看起来的样子。但是所有其他偏好现在看起来都大不相同了。
我回到API28级文件夹,查看Android原来的preference.xml
的内容,看看有没有变(因为我原来copied/subclassed 它)。它没有!然而,偏好的样式已经改变。
为了排除故障,我尝试验证 android.R.layout.preference
是否确实指向我正在查看的资源,这导致我出现了上述编译错误。
只是不要使用框架的首选项(包括资源 android.R.layout.preference_category
),但 androidx.preference. This also features a new one PreferenceManager, which should be used instead. Mixing up android.preference
with androidx.preference
may lead to unexpected results. Once posted one custom