如何从PreferenceFragmentCompat

时间:2019-08-13 07:57:47

标签: android android-preferences

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

我这样添加了Preferences类:

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)

添加的,

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

1 个答案:

答案 0 :(得分:1)

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

尝试使用您的PreferenceFragmentCompat子类,

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