android findViewById返回null

时间:2013-11-08 15:14:39

标签: android null android-linearlayout findviewbyid

找到线性布局时遇到问题... 这是xml布局:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:binding="http://www.gueei.com/android-binding/"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    tools:context=".controllers.ElencoInfrazioni" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="15dp" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Infrazione: " />

        <Spinner
            android:id="@+id/elencoInfrazioni"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1" />
    </LinearLayout>

    <TableLayout
        android:id="@+id/tabellaDatiElencoInfrazioni"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="10dp"
        android:stretchColumns="*"
        android:visibility="gone" > 

        <TableRow>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Art. 3: " />

            <TextView
                android:id="@+id/articolo3ElencoInfrazioni"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="non specificato"
                android:textStyle="bold" />

            <LinearLayout
                android:id="@+id/panelArticolo4ElencoInfrazioni"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Art. 4: " />

                <TextView
                    android:id="@+id/articolo4ElencoInfrazioni"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="non specificato"
                    android:textStyle="bold" />
            </LinearLayout>
        </TableRow>
        ....

处理布局的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
            this.setContentView(R.layout.elenco_infrazioni);
    init();
}
private void init() {
    tabellaDati = (TableLayout) this
            .findViewById(R.id.tabellaDatiElencoInfrazioni);
    elencoInfrazioni = (Spinner) this.findViewById(R.id.elencoInfrazioni);
    panelArticolo4 = (LinearLayout) this. 
            findViewById(R.id.panelArticolo4ElencoInfrazioni);
    articolo3 = (TextView) this
            .findViewById(R.id.articolo3ElencoInfrazioni);
    articolo4 = (TextView) this
            .findViewById(R.id.articolo4ElencoInfrazioni);
}

每个findViewById都没问题,除了LinearLayout panelArticolo4给我null ...我需要线性布局来设置它的可见性..我做错了什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

您确定所有其他观点都可以吗?在尝试使用它们之前,它们不会在初始化时给出任何错误。可能是你的观点未在onCreate初始化?如果您正在使用片段,则可以尝试在onCreateView而不是onCreate上初始化您的视图。

答案 1 :(得分:-4)

不要在任何地方使用“this”这个词,你的init方法中的“this”引用init而不是你的活动。