有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java(Android)如何获取EditText值?

我有一个应用程序应该是:
1.如果微调器值为“1”,则从EditText值执行某个数学公式
2.如果微调器值为“2”,则从EditText值执行某个数学公式 我收到了“NullPointerException”
这是我的代码:

package org.infinitech.degreescalculator.app;
import 安卓.app.Activity;
import 安卓.os.Bundle;
import 安卓.view.Menu;
import 安卓.view.MenuItem;
import 安卓.view.View;
import 安卓.widget.Button;
import 安卓.widget.EditText;
import 安卓.widget.Spinner;
import 安卓.widget.TextView;
public class MainActivity extends Activity{
    public Button button=(Button)findViewById(R.id.button);
    public String selectedItem;
    Integer number;
    Integer a;
    String numberTwo;
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText input=(EditText)findViewById(R.id.input);
        final TextView answerText=(TextView)findViewById(R.id.answer);
        final Spinner spinner=(Spinner)findViewById(R.id.options);
            final String inputTwo=(String)getText(R.id.input);
    selectedItem=(String)spinner.getSelectedItem();
        button.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                if(selectedItem.equals("Fahrenheit to Celsius")){
                    a=Integer.parseInt(inputTwo);
                    number=a*100;
                    numberTwo=number.toString();
                    answerText.setText(numberTwo);
                }
            }
        });
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        return super.onOptionsItemSelected(item);
    }
}

共 (3) 个答案

  1. # 1 楼答案

    实际上,这一行final String inputTwo=(String)getText(R.id.input);不会给出任何值,所以这样做只是直接在按钮的onclick中获取它的文本

    更改此选项:

    a=Integer.parseInt(inputTwo);
    

    至:

    a=Integer.parseInt(input.getText().toString());
    
  2. # 2 楼答案

    可以将值作为String获取,如下所示:

    editTextObject.getText().toString()
    
  3. # 3 楼答案

    您的问题是selectedItem是在onCreate方法中分配的,该方法在选择微调器中的任何项之前运行,因此总是null。将分配给它的行移动到button click listener的onClick方法中,应该可以解决问题

    类似地,您可能还需要将inputTwo变量移动到onClick方法中,因此这也不会在创建时设置,也不会更新