Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.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
Java 点击按钮获取EditText值,并使用该值进行计算?_Java_Android - Fatal编程技术网

Java 点击按钮获取EditText值,并使用该值进行计算?

Java 点击按钮获取EditText值,并使用该值进行计算?,java,android,Java,Android,我正在创建一个程序,它应该 1.获取微调器的值,“华氏到摄氏度”或“摄氏到华氏度” 2.获取EditText的值,并将其转换为整数 3.将该整数乘以100 4.将TextViewtext设置为该整数。 问题是我得到了java.lang.NumberFormatException 这是我的代码: package org.infinitech.degreescalculator.app; import android.app.Activity; import android.os.

我正在创建一个程序,它应该
1.获取微调器的值,“华氏到摄氏度”或“摄氏到华氏度”
2.获取
EditText
的值,并将其转换为整数
3.将该整数乘以100
4.将
TextView
text设置为该整数。
问题是我得到了
java.lang.NumberFormatException

这是我的代码:

 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);
        }
    }

这是我的日志:
原因:java.lang.NumberFormatException:无效int:“

我修好了!这是我新修改的代码:

 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);
     }
 }

活动中删除以下行

   public String inputValue=findViewById(R.id.input).toString();
   public Integer num=Integer.parseInt(inputValue);
并将
OnCreate
方法添加为

 String inputValue= input.getText().toString();
 Integer num=Integer.parseInt(inputValue);
因为已经定义了
input EditText

要将num转换为String,请使用
String.valueOf
而不是
.toString()
。因此,将单击函数时的按钮更改为

 button.setOnClickListener(new View.OnClickListener(){
                public void onClick(View v){
                    if(selectedItem.equals("Fahrenheit to Celsius")){
                        num=num*100;
                        answer.setText(String.valueOf(num));
                    }
                }
            });
改变这个

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

像这样使用getText()


您应该在onCreate()方法中执行所有这些操作

它告诉您
NullPointerException
在哪里?@yate它是
java.lang.NumberFormatException
我改为使用NullPointerException。固定的。这对你有用吗?还要检查@codeMagic建议的链接。恐怕它仍然不起作用。我收到
java.lang.NumberFormatException
@InfiniTech您是否更改了代码,请同时发布logcat异常。@InfiniTech什么是输入值,即edittext值。试着按照我的建议修改代码。现在是java.lang.NullPointerException
        public String inputValue=(EditText)findViewById(R.id.input).getText().toString();
EditText inputView = (EditText) findViewById(R.id.input);
String inputValue = inputView.getText().toString();