Как получить доступ к представлению внутри макета предпочтения, Android - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть PreferenceScreen с несколькими категориями PreferenceCategories.У каждого предпочтения есть свой макет.Этот макет содержит TextView.Моя цель - получить доступ к этому TextView в коде Java, чтобы изменить его текст.Вот мой пример:

В XML-файле PreferenceScreen

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    .
    .
    .
    <PreferenceCategory
        android:key="versionCategory"
        android:layout="@layout/preference_category_layout_version" />

</PreferenceScreen>

В XML-файле preference_category_layout_version

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- The layout for the preferenceCategory "VERSION" -->

    <TextView
        android:id="@+id/versionTextContainer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center_horizontal"
        android:text="Version 1.3"/>

</android.support.constraint.ConstraintLayout>

Я могу найти свои предпочтения в коде Java PreferenceFragment, используяfindPreference.Я попытался раздуть макет и получить доступ к TextView, используя findViewById.Однако настройка текста не сработала:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    .
    .
    .

    View rootView = View.inflate(getActivity(), findPreference("versionCategory").getLayoutResource(), null);
    TextView textView = rootView.findViewById(R.id.versionTextContainer);
    textView.setText("Hello World");
}

Интересно, есть ли лучший подход для доступа к дочернему виду внутри пользовательского макета предпочтения?

...