我有这个应用程序正在工作查找并突然崩溃由ClassCastException引起:android.widget.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;
}
关于问题是什么的任何想法?谢谢你的帮助。
答案 0 :(得分:1)
我认为问题在于代码中的某处,您将how_tobtn
视为ImageButton
,而实际上是Button
。
<Button
android:id="@+id/how_tobtn"
style="@style/HowTo"
android:layout_width="wrap_content"
...
错误可能在某些方面如下:
(ImageButton)getView(R.id.how_tobtn);
要避免这种情况,请更改xml或将其转换为代码中的正确类型:
(Button)getView(R.id.how_tobtn);
编辑:
我还要重新考虑我的活动的命名。像 Btn,HowtoBtn 这样的类名称可能令人困惑,特别是对于您自己而言。