Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从PreferenceFragmentCompat访问自定义布局?_Android_Android Preferences - Fatal编程技术网

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;
        }
    };
}