如何划分两个EditTexts?

时间:2013-11-17 20:48:11

标签: android android-edittext

如何划分两个EditTexts

ed number one = 80 

ed number two = 3.0625 

但是当我点击按钮来分割它们时,应用程序就会关闭一个力量。如何解决这个问题?

我的xml:

  <EditText
        android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:numeric="80" />

    <EditText
        android:id="@+id/two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="number"
        android:numeric="3.0625" />

    <EditText
        android:id="@+id/result"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="numberDecimal" />

这是代码

public class main  extends Activity {
EditText one,two,result;
Button calc;
BigDecimal onex,twox;


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

    calc = (Button) findViewById(R.id.button1);
    one = (EditText) findViewById(R.id.one);// = 80
    two = (EditText) findViewById(R.id.two);// = 3.0625
    result = (EditText) findViewById(R.id.result);// result
calc.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        onex = new BigDecimal(one.getText().toString());
        twox = new BigDecimal(two.getText().toString());
        result.setText((onex).divide(twox).toString());     
    }
});

}

如何在没有任何力量关闭的情况下正确分割工作?

2 个答案:

答案 0 :(得分:0)

您必须获取edittexts的文本值,并在您的情况下将它们转换为BigDecimal。尝试以下代码:

calc.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        BigDecimal bigOne, bigTwo, bigResult;

        try {
            bigOne = new BigDecimal(one.getText().toString());
            bigTwo = new BigDecimal(two.getText().toString());
        } catch (Throwable t) {
            Toast.makeText(this, "Fill texts with some numeric values" + t, Toast.LENGTH_SHORT).show();
            return;
        }

        bigResult = BigDecimal.ZERO;
        try {
            bigResult = bigOne.divide(bigTwo);
        } catch (Throwable t) {
            Toast.makeText(this, "Check your numeric values" + t, Toast.LENGTH_SHORT).show();
            return;
        }

        result.setText(String.valueOf(bigResult));

    }
});

修改另外,android:numeric只能有integersigneddecimal。你错误地使用它。

android:numeric="3.0625"

应该是; android:numeric="integer"android:numeric="signed"android:numeric="decimal"

要将值设置为editTexts,请使用: android:text="80"android:text="3.0625"

答案 1 :(得分:0)

当值不包含小数点(80)时,BigDecimal会将其视为零。

插入80.0