在所有情况下onClick监听器崩溃应用程序

时间:2015-07-05 22:11:54

标签: java android xml android-activity onclick

我试图创建一个简单的Android应用程序来计算税收,但每当我点击我创建的按钮时,我都会收到消息"不幸的是,等等等等等等已经停止"

这是我的Java:

public class MainActivity extends ActionBarActivity {

EditText propValue, stampDuty;
Button calculate;

Double x, y;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    start();
}

private void start() {
    propValue=(EditText)findViewById(R.id.propValue);
    calculate=(Button)findViewById(R.id.calculate);

    calculate.setOnClickListener(new Button.OnClickListener() {
        public void onClick(View v) {
            calculate();
        }
    });
}

private void calculate()
{
    x=Double.parseDouble(propValue.getText().toString());

    if (x <= 125000 ) {
        y = 0.0;
    } else if (x <= 250000) {
        y = (x - 125000) * 0.02;
    } else if (x <= 925000) {
        y = (125000 * 0.02) + ((x - 250000) * 0.05);
    } else if (x <= 1500000) {
        y = (125000 * 0.02) + (675000 * 0.05) + ((x - 925000) * 0.1);
    } else if (x > 150000) {
        y = (125000 * 0.02) + (675000 * 0.05) + (575000 * 0.1) + ((x - 1500000) * 0.12);
    }

    stampDuty.setText(Double.toString(y));
}
}

我绝对只是将数字放入EditText。我带或不带小数位的任何数字。这是相关的布局部分:

<EditText
    android:id="@+id/propValue"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:minLines="1"
    android:maxLines="1"/>

<Button
    android:id="@+id/calculate"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/button"
    android:layout_margin="10dp"/>

<TextView
    android:id="@+id/stampDuty"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_margin="10dp"
    android:minLines="1"
    android:maxLines="1"/>

1 个答案:

答案 0 :(得分:1)

stampDuty永远不会被初始化。 并且您将stampDuty声明为EditText,但在您的xml中是TextView。 将stampDuty更改为TextView,然后在start()中添加:

stampDuty=(TextView)findViewById(R.id.stampDuty);