我有一个强制关闭的活动,我得到一个logcat错误。它是一个简单的计算器活动,它工作5分钟前这里是logcat:
03-04 14:14:57.292: D/dalvikvm(14349): GC_EXTERNAL_ALLOC freed 47K, 49% free 2793K/5379K, external 1596K/2108K, paused 100ms
03-04 14:14:57.492: D/dalvikvm(14349): GC_EXTERNAL_ALLOC freed 1K, 49% free 2792K/5379K, external 3471K/4335K, paused 75ms
03-04 14:14:58.160: D/dalvikvm(14349): GC_EXTERNAL_ALLOC freed <1K, 49% free 2794K/5379K, external 5048K/5580K, paused 132ms
03-04 14:14:58.453: D/dalvikvm(14349): GC_EXTERNAL_ALLOC freed <1K, 49% free 2795K/5379K, external 8143K/8403K, paused 50ms
03-04 14:15:02.945: D/AndroidRuntime(14349): Shutting down VM
03-04 14:15:02.945: W/dalvikvm(14349): threadid=1: thread exiting with uncaught exception (group=0x40015578)
03-04 14:15:02.972: E/AndroidRuntime(14349): FATAL EXCEPTION: main
03-04 14:15:02.972: E/AndroidRuntime(14349): java.lang.RuntimeException: Unable to start activity ComponentInfo{izzy.n/izzy.n.calculator}: java.lang.ClassCastException: android.widget.Button
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.os.Looper.loop(Looper.java:130)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-04 14:15:02.972: E/AndroidRuntime(14349): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 14:15:02.972: E/AndroidRuntime(14349): at java.lang.reflect.Method.invoke(Method.java:507)
03-04 14:15:02.972: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
03-04 14:15:02.972: E/AndroidRuntime(14349): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
03-04 14:15:02.972: E/AndroidRuntime(14349): at dalvik.system.NativeStart.main(Native Method)
03-04 14:15:02.972: E/AndroidRuntime(14349): Caused by: java.lang.ClassCastException: android.widget.Button
03-04 14:15:02.972: E/AndroidRuntime(14349): at izzy.n.calculator.onCreate(calculator.java:24)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-04 14:15:02.972: E/AndroidRuntime(14349): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
03-04 14:15:02.972: E/AndroidRuntime(14349): ... 11 more
03-04 14:19:11.265: D/dalvikvm(14411): GC_EXTERNAL_ALLOC freed 50K, 49% free 2793K/5379K, external 1596K/2108K, paused 136ms
03-04 14:19:11.320: D/dalvikvm(14411): GC_EXTERNAL_ALLOC freed 1K, 49% free 2792K/5379K, external 3471K/4335K, paused 18ms
03-04 14:19:11.570: D/dalvikvm(14411): GC_EXTERNAL_ALLOC freed <1K, 49% free 2794K/5379K, external 5048K/5580K, paused 19ms
03-04 14:19:12.152: D/dalvikvm(14411): GC_EXTERNAL_ALLOC freed <1K, 49% free 2795K/5379K, external 8143K/8403K, paused 19ms
03-04 14:19:47.945: D/AndroidRuntime(14411): Shutting down VM
03-04 14:19:47.945: W/dalvikvm(14411): threadid=1: thread exiting with uncaught exception (group=0x40015578)
03-04 14:19:47.960: E/AndroidRuntime(14411): FATAL EXCEPTION: main
03-04 14:19:47.960: E/AndroidRuntime(14411): java.lang.RuntimeException: Unable to start activity ComponentInfo{izzy.n/izzy.n.calculator}: java.lang.ClassCastException: android.widget.Button
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.os.Looper.loop(Looper.java:130)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-04 14:19:47.960: E/AndroidRuntime(14411): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 14:19:47.960: E/AndroidRuntime(14411): at java.lang.reflect.Method.invoke(Method.java:507)
03-04 14:19:47.960: E/AndroidRuntime(14411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
03-04 14:19:47.960: E/AndroidRuntime(14411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
03-04 14:19:47.960: E/AndroidRuntime(14411): at dalvik.system.NativeStart.main(Native Method)
03-04 14:19:47.960: E/AndroidRuntime(14411): Caused by: java.lang.ClassCastException: android.widget.Button
03-04 14:19:47.960: E/AndroidRuntime(14411): at izzy.n.calculator.onCreate(calculator.java:24)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-04 14:19:47.960: E/AndroidRuntime(14411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
03-04 14:19:47.960: E/AndroidRuntime(14411): ... 11 more
这里是calculator.java(在eclipse中没有错误):
public class calculator extends Activity {
private EditText input1;
private EditText input2;
private EditText solution;
private TextView operator;
private calculator mContext;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calc);
input1 = (EditText) findViewById(R.id.input1);
input2 = (EditText) findViewById(R.id.input2);
solution = (EditText) findViewById(R.id.solution);
operator = (TextView) findViewById(R.id.operator);
// We create an OnClick Event in each button.
Button plusButton = (Button) findViewById(R.id.plusbutton);
Button minusButton = (Button) findViewById(R.id.minusbutton);
Button prodButton = (Button) findViewById(R.id.prodbutton);
Button divButton = (Button) findViewById(R.id.divbutton);
Button equalButton = (Button) findViewById(R.id.equalbutton);
plusButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
operator.setText("+");
}
});
minusButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
operator.setText("-");
}
});
prodButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
operator.setText("*");
}
});
divButton.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
operator.setText("/");
}
});
equalButton.setOnClickListener(new OnClickListener() {
private AlertDialog show;
public void onClick(View arg0) {
if ((input1.getText().length() == 0)
|| (input1.getText().toString() == " ")
|| (input2.getText().length() == 0)
|| (input2.getText().toString() == " ")) {
show = new AlertDialog.Builder(mContext).setTitle("Error")
.setMessage("Some inputs are empty")
.setPositiveButton("OK", null).show();
} else if (operator.getText().equals("")) {
show = new AlertDialog.Builder(mContext).setTitle("Error")
.setMessage("Operator is null").setPositiveButton(
"OK", null).show();
} else if (operator.getText().equals("+")) {
double result = new Double(input1.getText().toString())
+ new Double(input2.getText().toString());
solution.setText(Double.toString(result));
} else if (operator.getText().equals("-")) {
double result = new Double(input1.getText().toString())
- new Double(input2.getText().toString());
solution.setText(Double.toString(result));
} else if (operator.getText().equals("*")) {
double result = new Double(input1.getText().toString())
* new Double(input2.getText().toString());
solution.setText(Double.toString(result));
} else if (operator.getText().equals("/")) {
double result = new Double(input1.getText().toString())
/ new Double(input2.getText().toString());
solution.setText(Double.toString(result));
}
}
});
}
}
这是main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/gray" >
<ImageView
android:id="@+id/imageView2"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="40dp"
android:src="@drawable/notes" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="165dp"
android:layout_height="165dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="-2dp"
android:layout_marginTop="20dp"
android:src="@drawable/calc" />
<Button
android:id="@+id/button10"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_alignLeft="@+id/imageView3"
android:layout_alignTop="@+id/imageView2"
android:layout_marginLeft="19dp"
android:background="@null" />
<Button
android:id="@+id/button1"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_alignLeft="@+id/imageView2"
android:layout_alignTop="@+id/imageView2"
android:background="@null" />
</RelativeLayout>
calc.xml:
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/widget45"
android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:id="@+id/divbutton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="/"
android:layout_x="192px" android:layout_y="86px">
</Button>
<Button android:id="@+id/minusbutton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="-"
android:layout_x="254px" android:layout_y="18px">
</Button>
<EditText android:id="@+id/input1" android:layout_width="160px"
android:layout_height="wrap_content" android:textSize="18sp"
android:numeric = "decimal|signed"
android:layout_x="8px" android:layout_y="13px">
</EditText>
<EditText android:id="@+id/input2" android:layout_width="156px"
android:layout_height="wrap_content" android:textSize="18sp"
android:numeric = "decimal|signed"
android:layout_x="10px" android:layout_y="109px">
</EditText>
<Button android:id="@+id/plusbutton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="+"
android:layout_x="193px" android:layout_y="19px">
</Button>
<TextView android:id="@+id/operator" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_x="33px"
android:layout_y="77px">
</TextView>
<EditText android:id="@+id/solution" android:layout_width="304px"
android:layout_height="wrap_content" android:textSize="18sp"
android:layout_x="7px" android:layout_y="214px">
</EditText>
<Button android:id="@+id/prodbutton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="*"
android:layout_x="253px" android:layout_y="87px">
</Button>
<Button android:id="@+id/equalbutton" android:layout_width="120px"
android:layout_height="wrap_content" android:text="="
android:layout_x="192px" android:layout_y="149px">
</Button>
</AbsoluteLayout>
答案 0 :(得分:1)
你的问题在这里: java.lang.RuntimeException:无法启动活动ComponentInfo {izzy.n / izzy.n.calculator}:java.lang.ClassCastException:android.widget.Button
这是什么意思,就是你正在向一个不是Button的Button投射东西。 如果您转到XML文件,请检查其中哪一个不是Button。
也许您使用的是ImageButton?如果你这样做,它需要改为按钮。
Button plusButton = (Button) findViewById(R.id.plusbutton);
Button minusButton = (Button) findViewById(R.id.minusbutton);
Button prodButton = (Button) findViewById(R.id.prodbutton);
Button divButton = (Button) findViewById(R.id.divbutton);
Button equalButton = (Button) findViewById(R.id.equalbutton);
如果这不是您的修复,请发布您的XML文档R.layout.calc。