2013-05-17 61 views
1

從Android SDK複製SlidingDrawer代碼並將其導入到我的項目中時,我得到了一個IAE。Android:直接導入SlidingDrawer源代碼後收到IllegalArgumentException

java.lang.IllegalArgumentException:handle屬性是必需的,並且必須引用有效的子級。

這是我的佈局文件:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/MySlidingDrawer" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:text="test only" 
     android:textSize="20dp" /> 

    <com.mytest.view.SlidingDrawer 
     android:id="@+id/SlidingDrawer" 
     android:layout_width="wrap_content" 
     android:layout_height="250dip" 
     android:layout_alignParentBottom="true" 
     android:content="@+id/contentLayout" 
     android:handle="@+id/slideButton" 
     android:orientation="vertical" 
     android:topOffset="100.5dp" 
     android:padding="10dip" > 

     <Button 
      android:id="@id/slideButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="UP" > 
     </Button> 

     <LinearLayout 
      android:id="@id/contentLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="10dip" > 

      <Button 
       android:id="@+id/Button01" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dp" 
       android:text="Button01" > 
      </Button> 
     </LinearLayout> 
    </com.mytest.view.SlidingDrawer> 

</RelativeLayout> 

這是我的attrs:

<declare-styleable name="SlidingDrawer"> 
     <attr name = "orientation" format="integer"/> 
     <attr name = "bottomOffset" format = "dimension"/> 
     <attr name = "topOffset" format = "dimension"/> 
     <attr name = "allowSingleTap" format = "boolean"/> 
     <attr name = "animateOnClick" format = "boolean"/> 
     <attr name = "handle" format = "reference"/> 
     <attr name = "content" format = "reference"/> 
    </declare-styleable> 

回答

0

編輯:

在您的按鈕,嘗試改變android:id="@id/slideButton"android:id="@+id/slideButton"

作爲您的滑動抽屜手柄的視圖需要使用android:id =「@ id/handle」來讓SlidingDrawer工作

+0

我有android:handle =「@ + id/slideButton」它引用下面的按鈕,它不是做這項工作嗎? – user2342139

+0

我的錯誤。我編輯了我的答案 – Karakuri

0

你的問題是,你導入的類作爲自定義視圖但你仍然可以使用:

android:content="@+id/contentLayout" 
android:handle="@+id/slideButton" 

用這個代替:

app:content="@+id/contentLayout" 
app:handle="@+id/slideButton"