Android:查看时调用返回null?

时间:2012-09-19 19:11:19

标签: java android xml

我有一个基于布尔选项创建的视图,该视图标题为socialoptions,它在单独的xml文件中定义。每当我尝试通过socialoptions.setClickable(true);等方法使用它时,视图都会返回null。

Java代码:

        if (isUserProfile) {
            Log.d("user","user");
            middlelayout = (LinearLayout) findViewById (R.layout.usermiddlelayout);
        } else {
            Log.d("item","item");
            middlelayout = (LinearLayout)  findViewById (R.layout.itemmiddlelayout);
            socialoptions = (TextView) findViewById (R.id.socialoptions);
            map = (TextView) findViewById (R.id.map);
        }

XML CODE:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/itemmiddlelayout"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="25"
    android:background="@android:color/transparent"
    android:clickable="false"
    android:orientation="horizontal" >

    <RelativeLayout
        android:id="@+id/sociallayout"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="2"
        android:background="@android:color/transparent"
        android:paddingBottom="0dp"
        android:paddingRight="10dp"
        android:paddingTop="10dp" >

        <TextView
            android:id="@+id/socialoptions"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/transparent"
            android:clickable="false" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/maplayout"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:background="@android:color/transparent"
        android:paddingBottom="10dp"
        android:paddingTop="0dp" >

        <TextView
            android:id="@+id/map"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@android:color/transparent"
            android:clickable="false" />
    </RelativeLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

根据评论

你无法做你想做的事;您无法引用尚未设置的XML布局。也就是说,您必须先使用setContentViewinflate such a layout

drawable作为可引用对象存储在应用程序中;它作为APK中的“文件”存在。布局只是在“创建”之前没有任何意义的数据。

设置内容视图或将布局扩展到视图后,在引用布局内容时,您将不再收到null个对象。

答案 1 :(得分:0)

如果xml页面保存为usermiddlelayout.xml,则可以使用R.layout.usermiddlelayout。如果xml文件中的线性布局将其id设置为android:id =“@ + id / itemmiddlelayout”,则应使用R.id.itemmiddlelayout而不是R.layout.itemmiddlelayout。

下面,

middlelayout =(LinearLayout)findViewById(R.id.itemmiddlelayout);