Android findViewById()返回null

时间:2015-09-26 14:13:48

标签: java android

我知道有很多问题与我相似,但他们都没有给我答案。

我有一个布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:id="@+id/layout_main">

    <HorizontalScrollView
        android:id="@+id/scroll">

        <LinearLayout
            android:id="@+id/linear">
        </LinearLayout>
    </HorizontalScrollView>
</RelativeLayout>

并且在Activity的onCreate中发生以下情况:

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        layoutMain = (RelativeLayout) findViewById(R.id.layout_main);
        linearLayout = (LinearLayout) findViewById(R.id.linear);
        scrollView = (HorizontalScrollView) findViewById(R.id.scroll);

linearLayout和scrollView都包含我需要的视图,但layoutMain为null。怎么会发生这种情况?如何获得findViewById(R.id.layout_main)

3 个答案:

答案 0 :(得分:1)

如果你正在使用Android Studio等待gradle完成项目的构建,这可能会解决问题。另请尝试重新启动Android Studio。

答案 1 :(得分:0)

你没有layout_height。将它设置在match_patent上。

答案 2 :(得分:0)

您的xml布局缺少重要属性。为视图提供android:layout_heightandroid:layout_width。请参阅以下xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout_main">

    <HorizontalScrollView
        android:id="@+id/scroll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <LinearLayout
            android:id="@+id/linear"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
        </LinearLayout>
    </HorizontalScrollView>
</RelativeLayout>

<强>更新

正如您在评论中所说,宽度/高度属性存在于实际代码中。然后我建议项目模块下的删除构建文件夹的子目录并重建项目