2012-03-06 14 views
1

私はこのアプリケーションを見つけていて、ClassCastException:android.widget.ImageButtonによって突然クラッシュしています。私が働いている間に唯一変わったのは、ソリッドカラーからドロウアブル(パターン付きの青)までの相対レイアウトの背景でした。receiving ImageButtonによって発生したクラスキャスト例外

xmlファイル:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:baselineAligned="false" 
android:orientation="vertical" > 

<include 
    android:id="@+id/linearLayout1_ref" 
    android:layout_width="match_parent" 
    android:layout_height="75dip" 
    layout="@layout/title_area" /> 


<RelativeLayout 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/fur" > 

    <View 
     android:id="@+id/view5" 
     style="@style/BlueBandHor" 
     android:layout_width="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <View 
     android:id="@+id/view3" 
     style="@style/BlueBandVer" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@id/view5" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view4" 
     style="@style/BlueBandVer" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@id/view5" 
     android:layout_centerVertical="true" /> 

    <View 
     android:id="@+id/view1" 
     style="@style/BlueBandHor" 
     android:layout_width="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="48dp" /> 

    <ImageButton 
     android:id="@+id/btn1" 
     style="@style/Image" 
     android:layout_below="@id/view5" 
     android:layout_centerHorizontal="true" 
     android:contentDescription="@string/portrait" 
     android:onClick="onButtonClick" 
     android:paddingLeft="5dip" 
     android:paddingRight="5dip" 
     android:src="@drawable/orionhead" 
     android:background="@drawable/button_active" 
     android:clickable="true"/> 

    <ImageButton 
     android:id="@+id/btn3" 
     style="@style/Image" 
     android:layout_toRightOf="@+id/view3" 
     android:contentDescription="@string/portrait" 
     android:onClick="onButtonClick" 
     android:paddingLeft="5dip" 
     android:paddingRight="5dip" 
     android:src="@drawable/stonewallhead" 
     android:background="@drawable/button_active" 
     android:clickable="true" 
     android:layout_centerVertical="true"/> 

    <Button 
     android:id="@+id/how_tobtn" 
     style="@style/HowTo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/view1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="20dip" 
     android:background="@drawable/howto_button_active" 
     android:padding="5dip" 
     android:text="@string/How_to" 
     android:textColor="@color/yellow" 
     android:textSize="25dip" 
     android:onClick="onButtonClick"/> 

    <ImageButton 
     android:id="@+id/btn2" 
     style="@style/Image" 
     android:layout_toLeftOf="@+id/view4" 
     android:contentDescription="@string/portrait" 
     android:onClick="onButtonClick" 
     android:paddingLeft="5dip" 
     android:paddingRight="5dip" 
     android:src="@drawable/truffelhead" 
     android:background="@drawable/button_active" 
     android:clickable="true" 
     android:layout_centerVertical="true"/> 

</RelativeLayout> 

javaファイル:

public class ImageActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

public void onClick(View view) 
{Intent intent; 
    switch (view.getId()) { 
    case R.id.how_tobtn: 
     intent = new Intent(this, Howbtn.class); 
     break; 
    case R.id.btn1: 
     intent = new Intent(this, Btn1.class); 
     break; 
    case R.id.btn2: 
     intent = new Intent(this, Btn2.class); 
     break; 
    default: 
    intent = new Intent(this, Btn3.class); 
    break; 
      } 

問題が何であるかの任意のアイデア?何か助けてくれてありがとう。

+3

スタックトレースを表示してください。 –

答えて

1

あなたのコードのどこかで、how_tobtnImageButtonとして扱っていますが、実際は普通のButtonです。

(ImageButton)getView(R.id.how_tobtn); 

これを回避するには、あなたのXMLを変更したり、コードに正しい型にキャストするには::

(Button)getView(R.id.how_tobtn); 

<Button 
     android:id="@+id/how_tobtn" 
     style="@style/HowTo" 
     android:layout_width="wrap_content" 
... 

エラーがのようないくつかのラインである可能性があり編集:

私はまた、私のAの命名を再考する状況。 クラスのような名前は、Btn、HowtoBtnのような名前は、特にあなた自身のために混乱する可能性があります。

+0

ありがとうございます。私はそれを働かせました。 – kmb

関連する問題