我有一个基于布尔选项创建的视图,该视图标题为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>
答案 0 :(得分:1)
根据评论:
你无法做你想做的事;您无法引用尚未设置的XML布局。也就是说,您必须先使用setContentView
或inflate 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);