Android计算器 - Editview无法输入小数位

时间:2012-08-18 18:12:53

标签: android calculator

我是Android代码开发的新手...我正在开发一个Android计算器应用程序并且不明白为什么两个EditTexts(第一个输入和第二个输入)不能接受小数位但只能输入整数...这里附加为以下是代码:

谢谢!

=============主要活动=============================== < / p>

package com.trial.jm4_calculator;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

    private TextView output;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

    Button btn1 = (Button) findViewById(R.id.button1);
    btn1.setOnClickListener(btn1Listener);
    output = (TextView) findViewById(R.id.lblOutput);
    }

View.OnClickListener btn1Listener = new View.OnClickListener() {
    public void onClick(View v) {
       double opd1, opd2;
       double result = 0.0;
       EditText txtOpd1, txtOpd2;
       RadioButton rdbAdd, rdbSubtract, rdbMultiply, rdbDivide;
       CheckBox chkDivide;

       txtOpd1 = (EditText) findViewById(R.id.txtOpd1);
       txtOpd2 = (EditText) findViewById(R.id.txtOpd2);

       opd1 = Double.parseDouble(txtOpd1.getText().toString());
       opd2 = Double.parseDouble(txtOpd2.getText().toString());

       rdbAdd = (RadioButton) findViewById(R.id.rdbAdd);
       if (rdbAdd.isChecked()) {
           result = opd1 + opd2;
       }
       rdbSubtract = (RadioButton) findViewById(R.id.rdbSubtract);
       if (rdbSubtract.isChecked()) {
           result = opd1 - opd2;
       }
       rdbMultiply = (RadioButton) findViewById(R.id.rdbMultiply);
       if (rdbMultiply.isChecked()) {
           result = opd1 * opd2;
       }
       rdbDivide = (RadioButton) findViewById(R.id.rdbDivide);
       if (rdbDivide.isChecked()) {

              result = opd1 / opd2;            
       }
       output.setText("Answer = " + result);
    }
};
}

==================== main.xml中======================== ===========

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent" 
    android:orientation="vertical" 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:orientation="horizontal"> 
        <TextView 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="First Input: "/> 
        <EditText 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent" 
            android:inputType="number" 
            android:id="@+id/txtOpd1"/> 
    </LinearLayout>
    <RadioGroup 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:orientation="horizontal" 
        android:id="@+id/rdgOp"> 
        <RadioButton 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="+ " 
            android:id="@+id/rdbAdd"/> 
        <RadioButton 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="- " 
            android:id="@+id/rdbSubtract"/> 
        <RadioButton 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="* " 
            android:id="@+id/rdbMultiply"/> 
        <RadioButton 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="/ " 
            android:id="@+id/rdbDivide"/> 
    </RadioGroup>
    <LinearLayout 
        android:layout_height="wrap_content" 
        android:layout_width="fill_parent" 
        android:orientation="horizontal"> 
        <TextView 
            android:layout_height="wrap_content" 
            android:layout_width="wrap_content" 
            android:text="Second Input: "/> 
            <EditText 
                android:layout_height="wrap_content" 
                android:layout_width="fill_parent" 
                android:inputType="number" 
                android:id="@+id/txtOpd2"/> 
     </LinearLayout> 
     <Button 
         android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:text="Compute" 
         android:id="@+id/button1"/> 
     <TextView 
         android:layout_height="wrap_content" 
         android:layout_width="wrap_content" 
         android:id="@+id/lblOutput"/> 
</LinearLayout>

4 个答案:

答案 0 :(得分:4)

如果您只想在EditText上使用十进制数

在EditText小部件中使用xml属性android:inputType="numberDecimal",您的EditText声明将如下所示:

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

如果您想使用有符号十进制数,请将两个Xml属性android:inputType="numberDecimal"android:inputType="numberSigned"结合使用。您的EditText声明将如下所示:

<EditText
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="numberDecimal|numberSigned" >

</EditText>

答案 1 :(得分:3)

将android:inputType从“number”更改为“numberDecimal”。有关inputType的更多选项,请参阅documentation

答案 2 :(得分:1)

input Type =“number”不允许浮点数。尝试改变:

android:inputType="number"

为:

android:numeric="integer|decimal"

答案 3 :(得分:1)

您需要在XML代码中更改EditText的输入类型。

更改EditText的inputType属性

android:inputType="number"

android:inputType="numberDecimal"

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