我的findViewById()返回null,但不应该

时间:2014-12-12 16:30:13

标签: android eclipse android-layout android-fragments findviewbyid

我的findViewById返回null,但不应该。 正如您所见,该按钮位于同一XML文件中。

调用getActivity()完全没有区别

这是我的onCreateView

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container,
                false);

    Button  request = (Button) getView().findViewById(R.id.button_request);

    return rootView;
    }

这是fragment_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container_relative"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    tools:context="br.com.igor.MainActivity$PlaceholderFragment" >

    <TextView
        android:id="@+id/servic"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="15dp"
        android:layout_marginBottom="0dp"
        android:paddingTop="15dp"
        android:text="Sample instructions" />

    <Button
        android:id="@+id/button_request"
        style="@style/button_default"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="15dp"
        android:layout_below="@id/servic"
        android:text="Request" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:3)

getView返回null,而不是findViewById。使用rootView代替getView

  Button  request = (Button) rootView.findViewById(R.id.button_request);

getView会返回您在onCreateView

中夸大的观看次数