Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中计算EditText值?_Android_Android Edittext_Multiplication - Fatal编程技术网

如何在Android中计算EditText值?

如何在Android中计算EditText值?,android,android-edittext,multiplication,Android,Android Edittext,Multiplication,在Android应用程序中,我使用两个EditText控件并将它们的两个值相乘。 如果其中一个EditText为null,并且我在第二个中输入了一个值,那么它工作不正常。 我如何处理这种情况,其中一个EditText中有一个值,另一个null中有一个值,我想将这两个值相乘?首先,您需要有一个触发器来确定何时执行计算。假设它是一个按钮,或者更好的是,每次EditTexts的值发生变化时: private EditText editText1, editText2;

在Android应用程序中,我使用两个
EditText
控件并将它们的两个值相乘。 如果其中一个
EditText
null
,并且我在第二个中输入了一个值,那么它工作不正常。
我如何处理这种情况,其中一个
EditText
中有一个值,另一个
null
中有一个值,我想将这两个值相乘?

首先,您需要有一个触发器来确定何时执行计算。假设它是一个按钮,或者更好的是,每次
EditText
s的值发生变化时:

private EditText editText1,
                 editText2;
private TextView resultsText;

...............................

// Obtains references to your components, assumes you have them defined
// within your Activity's layout file
editText1 = (EditText)findViewById(R.id.editText1);
editText2 = (EditText)findViewById(R.id.editText2);

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

// Instantiates a TextWatcher, to observe your EditTexts' value changes
// and trigger the result calculation
TextWatcher textWatcher = new TextWatcher() {
    public void afterTextChanged(Editable s) {
        calculateResult();
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
};

// Adds the TextWatcher as TextChangedListener to both EditTexts
editText1.addTextChangedListener(textWatcher);
editText2.addTextChangedListener(textWatcher);

.....................................

// The function called to calculate and display the result of the multiplication
private void calculateResult() throws NumberFormatException {
  // Gets the two EditText controls' Editable values
  Editable editableValue1 = editText1.getText(),
           editableValue2 = editText2.getText();

  // Initializes the double values and result
  double value1 = 0.0,
         value2 = 0.0,
         result;

  // If the Editable values are not null, obtains their double values by parsing
  if (editableValue1 != null)
    value1 = Double.parseDouble(editableValue1.toString());

  if (editableValue2 != null)
    value2 = Double.parseDouble(editableValue2.toString());

  // Calculates the result
  result = value1 * value2;

  // Displays the calculated result
  resultsText.setText(result.toString());
}

单击按钮时,它将两个
EditText
框的值相乘,并检查它们是否为空:

private EditText txtOne;
private EditText txtTwo;
private EditText txtResult;
private Button btnCount;

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

    txtOne = (EditText) findViewById(R.id.editText1);
    txtTwo = (EditText) findViewById(R.id.editText2);
    txtResult = (EditText) findViewById(R.id.editText3);

    btnCount = (Button) findViewById(R.id.button1);
    btnCount.setText("Count");

    btnCount.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {               
            if (txtOne.getText() != null || txtTwo.getText() != null)
                txtResult.setText(String.valueOf(Double.parseDouble(txtOne.getText().toString()) * Double.parseDouble(txtTwo.getText().toString())));       
        }
    });
}

@Luviere代码的细微变化:

//import all the importables

public class MainActivity extends ActionBarActivity 
{

 EditText   Text1,
            Text2;

 double value1,
        value2,
        result;


@Override
protected void onCreate(Bundle savedInstanceState) 
{   
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ResultField = (TextView)findViewById(R.id.ResultField);

    TextWatcher textWatcher = new TextWatcher(){
        public void afterTextChanged(Editable s){
            calcResult(); 
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after){}
        public void onTextChanged(CharSequence s, int start, int before, int count){}
        };

    Text1 = (EditText)findViewById(R.id.Text1);
    Text2 = (EditText)findViewById(R.id.Text2);

    Text1.addTextChangedListener(textWatcher);
    Text2.addTextChangedListener(textWatcher);
    }


    private void calcResult() throws NumberFormatException {
    Editable editableText1 = Text1.getText(),
            editableText2 = Text2.getText();

    double  value1 = 0.0,
            value2 = 0.0,
            result;

    // NOTE: “&& editableText1.length() >= 1” prevents possible “invalid Double” errors!

    if (editableText1 != null && editableText1.length() >= 1)    
    value1 = Double.parseDouble(editableText1.toString());

    if (editableText2 != null && editableText2.length() >= 1)   
    value2 = Double.parseDouble(editableText2.toString());

    // Whatever your magic formula is
    result = value1 * value2; 

    ResultField.setText(Double.toString(result));
    {// Displays result to 2 decimal places
        ResultField.setText(String.format("%1.2f", result));    
    }
}           
}
我想你需要看看