gpt4 book ai didi

java - Android:Button 类的 ClassCastException

转载 作者:行者123 更新时间:2023-12-02 00:33:55 24 4
gpt4 key购买 nike

我在使用自定义 Button 类时遇到问题。

我尝试更改 <Button/> 的 xml 布局至<gButton/> ,但这并没有奏效。

我也尝试过转换 Button page1 = (gButton) findView.... ,在第 15 行,但由于某种原因不起作用(你可以转换一个子类,对吧?)

我不断从 LogCat 收到的错误是:

Caused by: java.lang.ClassCastException: android.widget.Button
at flash.tut.ButtonPage.onCreate(ButtonPage.java:15)

非常感谢任何帮助。

这是我的按钮 View :

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>

最佳答案

要将按钮转换为 gButton,您应该像这样声明按钮:

<com.example.gButton 
android:text="Page 3"
android:id="@+id/Button03"
android:layout_width="250px"
android:textSize="18px"
android:layout_height="55px">
</com.example.gButton>

但是你应该放你的包而不是“com.example”

你的 gButton 类必须有下一个构造函数:

package com.example;

public class gButton extends Button{
...

public gButton(Context context, AttributeSet attrs) { // this constructor will be called by inflater for creating object instance
super(context, attrs);
}

...

}

然后您可以按照您在问题中所写的那样转换按钮。但请注意,您的构造函数不会被调用

关于java - Android:Button 类的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8286894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com