Android 在 PreferenceFragment 中使用 findViewById 会给出 NullPointerException
Posted
技术标签:
【中文标题】Android 在 PreferenceFragment 中使用 findViewById 会给出 NullPointerException【英文标题】:Android use findViewById in PreferenceFragment gives NullPointerException 【发布时间】:2021-06-10 18:35:07 【问题描述】:我有一个包含自定义布局的首选项屏幕:
<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:key="myKey"
android:layout="@layout/my_layout" />
<ListPreference
app:defaultValue="@string/defaultGender"
app:entries="@array/gender_entries"
app:entryValues="@array/gender_values"
app:key="gender"
app:title="@string/gender"
app:useSimpleSummaryProvider="true" />
我正在尝试在 my_layout
中设置 TextView 的值:
public static class MyFragment extends PreferenceFragmentCompat
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
setPreferencesFromResource(R.xml.preference_screen, rootKey);
TextView textView= (TextView) this.getActivity().findViewById(R.id.myTextView);
textView.setText("XXX");
但我在textView.setText("XXX");
上收到NullPointerException
我做错了什么?
【问题讨论】:
【参考方案1】:尝试在 onViewCreated 函数中设置文本。
@Override
public void onViewCreated (View view, Bundle savedInstanceState)
TextView textView= (TextView) this.getActivity().findViewById(R.id.myTextView);
textView.setText("XXX");
【讨论】:
以上是关于Android 在 PreferenceFragment 中使用 findViewById 会给出 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章