Java ClassCastException:编辑文本到按钮错误
我正在开发一个安卓应用程序,我在这里发布后已经修复了它:并修复了问题。今天我把布局弄得一团糟,因为我不喜欢它的外观,我试图运行程序,但在将Java ClassCastException:编辑文本到按钮错误,java,android,runtime-error,classcastexception,Java,Android,Runtime Error,Classcastexception,我正在开发一个安卓应用程序,我在这里发布后已经修复了它:并修复了问题。今天我把布局弄得一团糟,因为我不喜欢它的外观,我试图运行程序,但在将编辑文本转换为按钮时出错,我很确定我没有这样做。是什么导致了ClassCastException?提前感谢您的帮助 package complex.OliverV; import android.app.Activity; import android.os.Bundle; import android.view.View; import
编辑文本
转换为按钮时出错,我很确定我没有这样做。是什么导致了ClassCastException
?提前感谢您的帮助
package complex.OliverV;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.RadioButton;
import android.widget.EditText;
public class ComplexNumbersActivity extends Activity {
/** Called when the activity is first created. */
Button Check;
RadioButton plus, minus, multiply, div;
EditText X1,X2,Y1,Y2;
TextView Ans;
int sign;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Check = (Button) findViewById(R.id.Check);
plus = (RadioButton) findViewById(R.id.plus);
minus = (RadioButton) findViewById(R.id.minus);
multiply = (RadioButton) findViewById(R.id.multiply);
div = (RadioButton) findViewById(R.id.div);
Ans = (TextView) findViewById(R.id.Ans);
X1=(EditText) findViewById(R.id.X1);
X2=(EditText) findViewById(R.id.X2);
Y1=(EditText) findViewById(R.id.Y1);
Y2=(EditText) findViewById(R.id.Y2);
plus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sign=1;
}
});
minus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sign=2;
}
});
multiply.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sign=3;
}
});
div.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sign=4;
}
});
Check.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String xs=X1.getText().toString();
String xss=X2.getText().toString();
String ys=Y1.getText().toString();
String yss=Y2.getText().toString();
double x3 = 0, y3 = 0;
if(!xs.equals("") && !xss.equals("") && !ys.equals("") && !yss.equals("")&& xs != null && xss != null && ys != null && yss != null)
{
double x1=Double.parseDouble(xs);
double x2=Double.parseDouble(xss);
double y1=Double.parseDouble(ys);
double y2=Double.parseDouble(yss);
switch(sign)
{
case(1):
{
x3=x1+x2;
y3=y1+y2;
}
case(2):
{
x3=x1-x2;
y3=y1-y2;
}
case(3):
{
x3=(x1*x2 - y1*y2);
y3=(x2*y1 + x1*y2);
}
case(4):
{
if(x2!=0 && y2!=0)
{
x3 = (x1 * x2 + y1 * y2) / (x2 * x2 + y2 * y2);
y3 = (x2 * y1 - x1 * y2) / (x2 * x2 + y2 * y2);
}
else
{
Ans.setText("Enter valid numbers!");
}
}
}
Ans.setText("x = "+x3+"y = "+y3);
}
else
{
Ans.setText("Enter valid numbers!");
}
}
});
}
}
这是Logcat中的错误列表
02-27 21:04:48.679: E/AndroidRuntime(571): FATAL EXCEPTION: main
02-27 21:04:48.679: E/AndroidRuntime(571): java.lang.RuntimeException: Unable to start activity ComponentInfo{complex.OliverV/complex.OliverV.ComplexNumbersActivity}: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.os.Looper.loop(Looper.java:137)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-27 21:04:48.679: E/AndroidRuntime(571): at java.lang.reflect.Method.invokeNative(Native Method)
02-27 21:04:48.679: E/AndroidRuntime(571): at java.lang.reflect.Method.invoke(Method.java:511)
02-27 21:04:48.679: E/AndroidRuntime(571): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
02-27 21:04:48.679: E/AndroidRuntime(571): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
02-27 21:04:48.679: E/AndroidRuntime(571): at dalvik.system.NativeStart.main(Native Method)
02-27 21:04:48.679: E/AndroidRuntime(571): Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
02-27 21:04:48.679: E/AndroidRuntime(571): at complex.OliverV.ComplexNumbersActivity.onCreate(ComplexNumbersActivity.java:21)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.Activity.performCreate(Activity.java:4465)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-27 21:04:48.679: E/AndroidRuntime(571): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-27 21:04:48.679: E/AndroidRuntime(571): ... 11 more
看起来你的R.id.支票是编辑文本,不是按钮
您的R.id.Check似乎是一个编辑文本,而不是一个按钮。根据错误:
Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
at complex.OliverV.ComplexNumbersActivity.onCreate(ComplexNumbersActivity.java:21)
R.id.Check
这里指的是编辑文本而不是按钮
Check = (Button) findViewById(R.id.Check); // Line 21
根据实际需要的视图类型,更改main.XML
中的Java代码或XML
另外,请阅读哪些状态下变量应以小写字母开头,以帮助区分它们与类。根据错误:
Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
at complex.OliverV.ComplexNumbersActivity.onCreate(ComplexNumbersActivity.java:21)
R.id.Check
这里指的是编辑文本而不是按钮
Check = (Button) findViewById(R.id.Check); // Line 21
根据实际需要的视图类型,更改main.XML
中的Java代码或XML
另外,请阅读哪些状态下变量应以小写字母开头,以帮助区分它们与类。如果您确定R.id.Check指的是按钮,那么您可以尝试清理项目,然后重新构建。如果您确定R.id.Check指的是按钮,然后,您可以尝试清理项目,然后重新构建。错误在这里
Check = (Button) findViewById(R.id.Check);
正因为如此
E/AndroidRuntime(571): Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
该错误表示您正在尝试转换不是按钮的EditText
转到设计相关布局的XML文件,并更改特定字段的android ID值
编辑
好像你来自C++背景。在Java中,请遵循Java命名标准,否则您的代码将被评为糟糕的设计,并将误导许多“快速查看”开发人员 错误就在这里
Check = (Button) findViewById(R.id.Check);
正因为如此
E/AndroidRuntime(571): Caused by: java.lang.ClassCastException: android.widget.EditText cannot be cast to android.widget.Button
该错误表示您正在尝试转换不是按钮的EditText
转到设计相关布局的XML文件,并更改特定字段的android ID值
编辑
好像你来自C++背景。在Java中,请遵循Java命名标准,否则您的代码将被评为糟糕的设计,并将误导许多“快速查看”开发人员-1这意味着从字面上看异常是什么意思这是字面意思是什么例外是是的,我的C++和C语言更好,而且对java和类的总体来说没有太多。谢谢你的帮助:是的,我喜欢C++和C语言,而且对java和类的整体来说也不怎么多。谢谢你的帮助:)