0

I am creating a program that is supposed to
1. Get the value of a spinner, either "Fahrenheit to Celsius" or "Celsius to Fahrenheit"
2. Get the value of EditText and convert it into an integer
3. Multiply that integer by 100
4. Set TextView text as that integer.
The problem is that I'm getting java.lang.NumberFormatException.
Here is my code:

 package org.infinitech.degreescalculator.app;
    import android.app.Activity;
    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.Spinner;
    import android.widget.TextView;
    public class MainActivity extends Activity{
        public Spinner spinner;
        public String selectedItem;
        public EditText input;
        public Button button;
        public String inputValue=findViewById(R.id.input).toString();
        public Integer num=Integer.parseInt(inputValue);
        public String num2;
        public TextView answer;
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            spinner=(Spinner)findViewById(R.id.options);
            selectedItem=(String)spinner.getSelectedItem();
            input=(EditText)findViewById(R.id.input);
            button=(Button)findViewById(R.id.button);
            answer=(TextView)findViewById(R.id.answer);
            button.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    if(selectedItem.equals("Fahrenheit to Celsius")){
                        num=num*100;
                        num2=num.toString();
                        answer.setText(num2);
                    }
                }
            });
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu){
            getMenuInflater().inflate(R.menu.main,menu);
            return true;
        }
        @Override
        public boolean onOptionsItemSelected(MenuItem item){
            return super.onOptionsItemSelected(item);
        }
    }


Here is my logcat:
Caused by: java.lang.NumberFormatException: Invalid int: ""

I fixed it! Here is my new modified code:

 package org.infinitech.degreescalculator.app;
 import android.app.Activity;
 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.Spinner;
 import android.widget.TextView;
 public class MainActivity extends Activity{
     public Spinner spinner;
     public String selectedItem;
     public EditText input;
     public Integer num;
     public Button button;
     public TextView answer;
     @Override
     protected void onCreate(Bundle savedInstanceState){
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         spinner=(Spinner)findViewById(R.id.options);
         selectedItem=(String)spinner.getSelectedItem();
         input=(EditText)findViewById(R.id.input);
         button=(Button)findViewById(R.id.button);
         answer=(TextView)findViewById(R.id.answer);
         button.setOnClickListener(new View.OnClickListener(){
             public void onClick(View v){
                 if(selectedItem.equals("Fahrenheit to Celsius")){
                     num=Integer.parseInt(input.getText().toString())*100;
                     answer.setText(num.toString());
                 }
             }
         });
     }
     @Override
     public boolean onCreateOptionsMenu(Menu menu){
         getMenuInflater().inflate(R.menu.main,menu);
         return true;
     }
     @Override
     public boolean onOptionsItemSelected(MenuItem item){
         return super.onOptionsItemSelected(item);
     }
 }
Kyle Horkley
  • 911
  • 1
  • 9
  • 23
  • where does it tell you the `NullPointerException` is? – yate Jun 23 '14 at 17:37
  • @yate It was `java.lang.NumberFormatException` I put NullPointerException instead. Fixed. – Kyle Horkley Jun 23 '14 at 17:40
  • 1
    [See this post](http://stackoverflow.com/questions/18880962/i-would-like-to-set-my-variables-at-the-top-of-my-class-instead-of-in-the-method/18881067#18881067) and [this post](http://stackoverflow.com/questions/19988434/android-check-if-string-contains-characters-other-than-0-9/19988499#19988499) – codeMagic Jun 23 '14 at 17:44

3 Answers3

1

Remove below lines from your Activity

   public String inputValue=findViewById(R.id.input).toString();
   public Integer num=Integer.parseInt(inputValue);

and Add in OnCreate Method as

 String inputValue= input.getText().toString();
 Integer num=Integer.parseInt(inputValue);

Because input EditText already defined.

And to convert num to String use String.valueOf instead of .toString().So change button Onclick function as

 button.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    if(selectedItem.equals("Fahrenheit to Celsius")){
                        num=num*100;
                        answer.setText(String.valueOf(num));
                    }
                }
            });
Giru Bhai
  • 14,370
  • 5
  • 46
  • 74
1

change this

        public String inputValue=findViewById(R.id.input).toString();

as

        public String inputValue=(EditText)findViewById(R.id.input).getText().toString();
ISURU
  • 923
  • 13
  • 24
0

use getText() like so

EditText inputView = (EditText) findViewById(R.id.input);
String inputValue = inputView.getText().toString();

you should do all of this in the onCreate() method

bhowden
  • 669
  • 7
  • 15