如何解决在Android Studio上工作时,自定义首选项没有自动完成功能吗?重构不适用于自定义视图属性
在常规布局XML文件中不会发生此问题,但在PreferenceScreen xml文件中会发生。这是预期的行为吗?当我定义一个自定义视图并将其直接添加到PreferenceScreen的XML文件中时,该自定义视图对其属性没有自动完成或重构功能。
要阐明自定义首选项的含义:我使用this method来实现自定义首选项。
因此,让我们来看一下该链接中的示例。我想做的是具有自动完成功能的所有优点(例如IntelliSense)。假设我想创建一个我定义/创建的自定义SeekBar,但是我没有手动键入包名称和类名称,而是按CTRL + SPACE弹出了自动完成列表。却没有出现!
假设我希望这是我的最终PreferenceScreen xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.SeekbarPreference
android:key="pref_volume"
android:title="@string/volume" />
</PreferenceScreen>
我想CTRL + SPACE自动完成我的自定义首选项:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.ex
</PreferenceScreen>
但这不起作用!它确实适用于由“活动”放大的普通布局文件下的“自定义视图”。但是,如果是PreferenceScreen,我必须全部输入,但是我容易出错。
此外,我想重构自定义首选项属性参考的资源。假设我进入“ strings.xml”资源文件,并将“ @ string / volume”更改为“ @ string / volume_label”
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<com.example.SeekbarPreference
android:key="pref_volume"
android:title="@string/volume" />
</PreferenceScreen>
当我在我的“ strings.xml”文件中时,如果右键单击并将“ volume”重构为“ volume_label”,这些资源将在整个项目中重命名,包括布局xml文件和java类文件。但是,PreferenceScreen文件中的“ @ string / volume”保持不变。而且,当我编译并安装该应用程序时,我从Android Studio中收到一条错误消息,即名为“ volume”的String资源不存在。
如果我在PreferenceScreen的XML文件中,则右键单击: android:title =“ @ string / volume” ,“重构”>“重命名”按钮丢失。
解决方法
我解决了。
问题来自为自定义首选项类指定的访问修饰符。
如果您希望能够重构并为自定义首选项启用自动完成功能,则Android Studio仍需要访问该类。
这是自动完成和重构无法正常工作的样子:
class MySeekBarPreference extends SeekBarPreference {
// Autocomplete and refactoring DISABLED in Android Studio
}
如果您希望自动完成和重构能够正常工作,这是它的外观:
public class MySeekBarPreference extends SeekBarPreference {
// Autocomplete and refactoring ENABLED in Android Studio
}
考虑到这一新信息,我认为最初的问题与它是PreferenceScreen还是常规的夸张布局无关。我在常规布局中使用的其他自定义视图是公开的,但是我在PreferenceScreen中的自定义首选项不是公开的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。