我有問題使用我的自定義按鈕類。 我已經嘗試將xml佈局從<Button/>
更改爲<gButton/>
,但那沒有奏效。 我也試過鑄造Button page1 = (gButton) findView....
,在第15行,但由於某種原因不能正常工作(你可以投一個子類,對吧?)Android:按鈕類ClassCastException
我一直從logcat中得到的錯誤是:
Caused by: java.lang.ClassCastException: android.widget.Button
at flash.tut.ButtonPage.onCreate(ButtonPage.java:15)
任何幫助非常感謝。
這裏是我的按鈕看法:
public class ButtonPage extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.button);
gButton page1 = (gButton) findViewById(R.id.Button01); //<---LogCat: ClassCastException
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent mI = new Intent(view.getContext(), Page1.class);
startActivityForResult(mI, 0);
}
});
}
}
和我gButton延伸按鈕類:
public class gButton extends Button{
private static Context con;
public gButton(){this("Blank");}
public gButton(String name){
this(name, R.color.text_color);
}
public gButton(String name, int col) {
this(name, col, con);
}
public gButton(String name, int col, Context context) {
super(context); //necessary context...dont know why.
setBackgroundResource(R.drawable.icon);
setTextColor(col);
setText(name);
setTextSize(14);
}
}
,最後我的XML佈局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:text="Page 1"
android:id="@+id/Button01"
android:layout_width="250px"
android:textSize="18px"
android:layout_height="55px">
</Button>
<Button android:text="Page 2"
android:id="@+id/Button02"
android:layout_width="250px"
android:textSize="18px"
android:layout_height="55px">
</Button>
<Button android:text="Page 3"
android:id="@+id/Button03"
android:layout_width="250px"
android:textSize="18px"
android:layout_height="55px">
</Button>
<Button android:text="ListView Page"
android:id="@+id/ButtonList"
android:layout_width="250px"
android:textSize="18px"
android:layout_height="55px">
</Button>
</LinearLayout>
所以你說沒有辦法我可以實現我的自定義按鈕類,因爲鑄造只是平坦不會工作? – tetris11
不,他是說沒有辦法將Button投射到gButton上。 ;)嘗試在佈局中指定gButtons而不是按鈕。有兩種方法可以做到這一點:完全限定XML元素中的包名稱,例如:或使用您將需要標準View構造函數接受參數'(Context,AttributeSet)'以便在XML佈局中使用它。 –
adamp