Android 如何从PreferenceFragmentCompat访问自定义布局?
我想从设置为Android 如何从PreferenceFragmentCompat访问自定义布局?,android,android-preferences,Android,Android Preferences,我想从设置为首选项的自定义布局访问视图 设置\u screen.xml ... 设置片段.kt class SettingsFragment: PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { } override fun onCreate(savedInstanceState: Bundle?
首选项的自定义布局访问视图
设置\u screen.xml
...
设置片段.kt
class SettingsFragment: PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
addPreferencesFromResource(R.xml.settings_screen)
}
}
有一个关于stackoverflow的问题与此类似,但在该回答中,他是从主布局文件访问视图,而不是从preference
我还发现了这篇文章,他使用onBindView
方法访问自定义视图
但是在PreferenceFragmentCompat
已更新
layout\u storage.xml
现在我想获得
progressBar
您可以在onCreatePreferences
中添加您的首选项布局,使用setpreferences fromResource
获取更多详细信息,请访问
重写
首选项FragmentCompat
中的以下方法:
@Override
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
return new PreferenceGroupAdapter(preferenceScreen) {
public PreferenceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
PreferenceViewHolder holder = super.onCreateViewHolder(parent, viewType);
View customLayout = holder.itemView;
if (customLayout.getId() == R.id.myCustomId) {
// get ref on your layout or modify it
}
return holder;
}
};
}
您可能希望在LinearLayout中添加一个id以检查布局是否正确…希望有帮助 好的,这对我访问自定义布局视图有什么帮助?我想这是一个很大的误解,我想从
@layout/layout\u storage
@Jeeva获取视图,我有同样的问题。您是否找到了从@layout/layout\u存储获取视图的解决方案?
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference preference = findPreference(key);
if (preference != null) {
if (!(preference instanceof CheckBoxPreference)) {
String value = sharedPreferences.getString(preference.getKey(), "");
setPreferenceSummery(preference, value);
}
}
}
@Override
protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
return new PreferenceGroupAdapter(preferenceScreen) {
public PreferenceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
PreferenceViewHolder holder = super.onCreateViewHolder(parent, viewType);
View customLayout = holder.itemView;
if (customLayout.getId() == R.id.myCustomId) {
// get ref on your layout or modify it
}
return holder;
}
};
}