У меня есть 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");
}
Интересно, есть ли лучший подход для доступа к дочернему виду внутри пользовательского макета предпочтения?