在非常简单的Android代码中强制关闭错误

时间:2013-11-24 22:02:48

标签: android

my * .java:

package com.google.multiplier;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class Multiplier extends Activity {
    private EditText num1,num2,res;
    private int result;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_multiplier);
        num1=(EditText)findViewById(R.id.EditText1);
        num2=(EditText)findViewById(R.id.EditText2);
        res=(EditText)findViewById(R.id.editText3);
        result=(Integer.parseInt(num1.getText().toString()))*(Integer.parseInt(num2.getText().toString()));


        Button button1 = (Button) findViewById(R.id.button1);
            button1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    res.setText(Integer.toString(result));

                }
            });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_multiplier, menu);
        return true;
    }


}

和布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <EditText
        android:id="@+id/EditText1"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="126dp"
        android:ems="10"
        android:inputType="number" />

    <EditText
        android:id="@+id/EditText2"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/EditText1"
        android:layout_alignBottom="@+id/EditText1"
        android:layout_marginLeft="24dp"
        android:layout_toRightOf="@+id/EditText1"
        android:ems="10"
        android:inputType="number" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/EditText1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="14dp"
        android:text="@string/bt" />

    <EditText
        android:id="@+id/editText3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="27dp"
        android:ems="10"
        android:inputType="numberDecimal" />

</RelativeLayout>

您可能会看到它是一个简单的乘数。我在Android 4.0模拟器中启动它并获得强制关闭错误,但编译器在运行之前没有发现任何错误。我怎样才能找到问题所在?

2 个答案:

答案 0 :(得分:0)

如果给出一个空字符串(例如首次创建活动时),

Integer.parseInt将失败。您应该在result中计算OnClickListener

答案 1 :(得分:0)

将计算移至按钮单击实现

@Override
public void onClick(View v) {
    result=(Integer.parseInt(num1.getText().toString()))*(Integer.parseInt(num2.getText().toString()));

    res.setText(Integer.toString(result));

}

现在,正在发生的事情是在onCreate方法中,当它尝试创建您的活动时,在计算它num1.getText().toString()""。在做, Integer.parseInt(""),编纂者感到困惑。 你说你没有得到任何例外。令人惊讶的是,我在使用您的代码时得到了NumberFormatException

相关问题