如何在首选项,Android中访问视图

时间:2019-02-26 08:54:10

标签: java android layout preference preferencefragment

我有一个带有多个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");
}

我想知道是否有更好的方法可以在首选项的自定义布局内访问子视图?

0 个答案:

没有答案