當我訪問included layout中的一個RelativeLayout viewgroup時,獲取了 NullPointerexception異常。在代碼中它定義為rootlayout,為什麼會出錯?
date_layout.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_layoutroot_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#eeeeee"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/date_from1_id"
style="@style/date_text"
android:layout_alignParentTop="true"
android:text="@string/date_from1" />
<TextView
android:id="@+id/date_from2_id"
style="@style/date_text"
android:layout_alignBaseline="@+id/date_from1_id"
android:layout_alignBottom="@+id/date_from1_id"
android:layout_alignParentRight="true"
android:text="@string/date_To1" />
<TextView
</RelativeLayout>
main_layout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<include layout="@layout/date_layout" android:id="@+id/datelayout_id"></include>"
<FrameLayout
android:id="@+id/frame_id"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
我的代碼是:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
View view = findViewById(R.id.datelayout_id);
rootlayout = (RelativeLayout)view.findViewById(R.id.my_layoutroot_id);
rootlayout.setOnclickListener(this);
rootlayout = (RelativeLayout)view.findViewById(R.id.layoutroot_id);
修改為這樣就行了,include 和style文件很像 都是以子的屬性為准 相當於java的復寫,你在父布局中直接把id本來為my_layoutroot_id修改為了layoutroot_id.
所以可以把子布局中的
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
//android:id="@+id/my_layoutroot_id"//這個可以去掉了
android:layout_width="wrap_content"
..../>