繁体   English   中英

Fragment中的findViewById()返回null

[英]findViewById() in Fragment returns null

我试图让我的faq_fragment.xml显示的TextViews

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/question_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAlignment="center"
        android:text="Title 1"/>

    <TextView
        android:id="@+id/answer_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:textAlignment="center"
        android:text="Description 1"
        android:textColor="#33000000"
        android:layout_marginTop="5dp"/>

</LinearLayout>

在我的片段课中

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ((TextView)container.findViewById(R.id.question_text)).setText(title);
    ((TextView)container.findViewById(R.id.answer_text)).setText(description);

    return inflater.inflate(R.layout.faq_fragment, container, false);
}

应用程式当机,我收到错误讯息:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

您需要先膨胀视图,然后再使用它。

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.faq_fragment, container, false);
    ((TextView)view .findViewById(R.id.question_text)).setText(title);
    ((TextView)view .findViewById(R.id.answer_text)).setText(description);

    return view;
}

您应该使用膨胀视图:

更改为:

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.faq_fragment, container, false);
    ((TextView)view.findViewById(R.id.question_text)).setText(title);
    ((TextView)view.findViewById(R.id.answer_text)).setText(description);
    return view;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM