-3

I am trying to get the value of inputEditText and multiply it by the value of convertNum.

The error I'm getting is: Operator '*' cannot be applied to 'android.widget.EditText','double'

I believe I need to convert the value of inputEditText into a number, but I'm not sure. Any help would be appreciated. Here is my code:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

    // Declare variables
    final Button calculateButton = (Button) findViewById(R.id.button);
    final TextView resultTextView = (TextView) findViewById(R.id.textView2);
    final TextView resultnumTextView = (TextView) findViewById(R.id.textView3);
    final EditText inputEditText = (EditText) findViewById(R.id.editText);
    final double convertNum = 0.125;

    // Set resultTextView to be invisible on app start
    resultTextView.setVisibility(View.INVISIBLE);

    // When calculate button is pressed: Set resultTextView to visible and show result
    calculateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            resultTextView.setVisibility(View.VISIBLE);
            resultnumTextView.setText(inputEditText * convertNum);

        }
    });
}
duberry
  • 41
  • 7
  • I chose pelotasplus' answer because they explained why my code was wrong instead just correcting my code. Thank you for your answer though. – duberry Aug 07 '15 at 23:29

4 Answers4

1

Instead of this:

resultnumTextView.setText(inputEditText * convertNum);

Do this:

resultnumTextView.setText(Double.parseDouble(inputEditText.getText().toString()) * convertNum);
Aakash
  • 5,181
  • 5
  • 20
  • 37
1

You get the error as you are trying to multiply EditText (which is a View instance) and double (which is a number).

Easiest fix is to replace

resultnumTextView.setText(inputEditText * convertNum);

with

resultnumTextView.setText(String.valueOf(
    Float.valueOf(inputEditText.getText().toString()) * convertNum
));
pelotasplus
  • 9,852
  • 1
  • 35
  • 37
0

inputEditText is an EditText, a widget to write text. You need to extract the typed text and convert into a float.

inputEditText.getText().toString() 

Will give you a String with the typed text. Then use the wrapper class Float to convert into a number

 String s = inputEditText.getText().toString();
 Float f= Float.parseFloat(s);

As you can see here

Community
  • 1
  • 1
Diego Freniche
  • 5,225
  • 3
  • 32
  • 45
-2
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

    // Declare variables
    final Button calculateButton = (Button) findViewById(R.id.button);
    final TextView resultTextView = (TextView) findViewById(R.id.textView2);
    final TextView resultnumTextView = (TextView) findViewById(R.id.textView3);
    final EditText inputEditText = (EditText) findViewById(R.id.editText);
    final double convertNum = 0.125;

    // Set resultTextView to be invisible on app start
    resultTextView.setVisibility(View.INVISIBLE);

    // When calculate button is pressed: Set resultTextView to visible and show result
    calculateButton.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String valueFromInput = inputEditText.getText().toString();
            try{
               double valueToDouble = Double.parseDouble(valueFromInput);
               double result = convertNum * valueToDouble;
               resultnumTextView.setText(result+"");
               resultTextView.setVisibility(View.VISIBLE);
            }catch(Exception e){
               // print the exception.
            }
        }
    });
}
Deepak Goyal
  • 4,747
  • 2
  • 21
  • 46