如何从 PreferenceFragmentCompat 内部访问自定义首选项 class

How to access custom Preference class from inside PreferenceFragmentCompat

我需要在我的自定义 'android.support.v7.preference.Preference' class 中调用一个方法。

我这样添加 Preferences class:

addPreferencesFromResource(R.xml.app_prefs)

R.xml.app_prefs:

    <PreferenceCategory
        android:layout="@layout/pref_category_text"
        android:title="@string/pref_category_stat_out_title">
        <com.sun.preferences.CustomPreference android:key=" @string/pref_key_show_stat" />
    </PreferenceCategory>

你看上面的CustomPreference

它有这个方法 CallMee() 就像这样真的很简单为了简单起见我删除了一些东西:

public class CustomPreference extends Preference {

  public CustomPreference(Context context) {
     super(context);
  }

  public void CallMee(){

  }
}

我在PreferenceFragmentCompat中试过使用方法:

override fun setUserVisibleHint(isVisibleToUser: Boolean) {
    super.setUserVisibleHint(isVisibleToUser)

   if(isVisibleToUser)
     // call method CallMee() inside `CustomPreference` but how?

}

由于此自定义 CustomPreference 是从 addPreferencesFromResource(R.xml.app_prefs)

添加的

不知道怎么称呼!可能吗?

您必须在 if (isVisibleToUser) 的块中构建自定义首选项的实例。

在您的 PreferenceFragmentCompat 子类中尝试,

CustomPreference pref = findPreference(getString(R.string.pref_key_show_stat));
pref.CallMee();