我有一个带有多个PreferenceCategories的PreferenceScreen。每个首选项都有一个自定义布局。此布局包含一个TextView。我的目标是使用Java代码访问此TextView来修改其文本。这是我的示例:
在PreferenceScreen XML文件中
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
.
.
.
<PreferenceCategory
android:key="versionCategory"
android:layout="@layout/preference_category_layout_version" />
</PreferenceScreen>
在preference_category_layout_version XML文件中
<?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>
我可以使用findPreference
在PreferenceFragment Java代码中找到我的偏好。我试图增加布局并使用findViewById
访问TextView。但是,设置文本无效:
@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");
}
我想知道是否有更好的方法可以在首选项的自定义布局内访问子视图?