0

ボタンのクリックで開く引き出しを1つ追加し、テキスト、ボタンを表示できるという点で小さなプログラムを実行していますが、その引き出しにImageButtonを追加したい場合、エラーが発生します。

public class slidingDrawerDemo extends Activity implements OnClickListener {

ImageButton slideButton, b1, b2;
SlidingDrawer slidingDrawer;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    slideButton = (ImageButton) findViewById(R.id.slideButton);
    slidingDrawer = (SlidingDrawer) findViewById(R.id.SlidingDrawer);


    b1 = (ImageButton) findViewById(R.id.imageButton1);
    b2 = (ImageButton) findViewById(R.id.imageButton2);

    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    OnClickListener(this);

    slidingDrawer.setOnDrawerOpenListener(new OnDrawerOpenListener() {
        @Override
        public void onDrawerOpened() {
            slideButton.setBackgroundResource(R.drawable.closearrow);
        }
    });

    slidingDrawer.setOnDrawerCloseListener(new OnDrawerCloseListener() {
        @Override
        public void onDrawerClosed() {
            slideButton.setBackgroundResource(R.drawable.openarrow);
        }
    });
}

@Override
public void onClick(View v) {
    Button b = (Button) v;
    Toast.makeText(slidingDrawerDemo.this, b.getText() + " Clicked",
            Toast.LENGTH_SHORT).show();
}

}

activity_main.xml

activity_main.xml

     <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/LinearLayout01"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="bottom"
        android:orientation="vertical" >

        <SlidingDrawer
            android:id="@+id/SlidingDrawer"
            android:layout_width="500dp"
            android:layout_height="fill_parent"
            android:background="@layout/border"
            android:content="@+id/contentLayout"
            android:handle="@+id/slideButton"
            android:orientation="vertical"
            android:padding="5dip"
            android:scrollbarStyle="insideInset" >

            <Button
                android:id="@+id/slideButton"
                android:layout_width="158dp"
                android:layout_height="100dp"
                android:background="@drawable/closearrow" >
            </Button>

            <LinearLayout
                android:id="@+id/contentLayout"
                android:layout_width="fill_parent"
                android:layout_height="667dp"
                android:gravity="center"
                android:orientation="vertical"
                android:padding="5dip" >

                <ImageButton
                    android:id="@+id/imageButton2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/imagesb" />

                <ImageButton
                    android:id="@+id/imageButton1"
                    android:layout_width="405dp"
                    android:layout_height="200dp"
                    android:src="@drawable/imagesa" />

            </LinearLayout>

        </SlidingDrawer>

    </LinearLayout>

エラーは、 java.lang.ClassCastException: android.widget.Button を android.widget.ImageButton にキャストできません

4

1 に答える 1

0

次の 2 つの可能性があります。

1) xml ファイルで ImageButton を使用しているが、Button の ID を見つけようとする場合:

2) xml ファイルで Button を使用しているが、 ImageButton の ID を見つけようとする場合:

ImageButton を使用している場合は、onCreate() に設定します。

  ImageButton ib = (ImageButton)findViewById(R.id.imagebutton1);

ボタンを使用している場合は、onCreate() に設定します

  Button ib = (Button)findViewById(R.id.button1);

問題はここにあります:

 slideButton = (ImageButton) findViewById(R.id.slideButton);

ImageButton で初期化しましたが、xml ファイルでは Button..So 変更します

 slideButton = (Button) findViewById(R.id.slideButton);
于 2013-09-16T10:05:02.810 に答える