(Android)如何获取EditText值?

时间:2014-06-14 19:34:50

标签: java android xml

我有一个应用应该是:
1.如果Spinner值为" 1",请从EditText值中执行某个数学等式 2.如果Spinner值为" 2",请从EditText值执行某个算术等式 我得到" NullPointerException"
这是我的代码:

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 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 个答案:

答案 0 :(得分:0)

您可以像String一样获取价值:

editTextObject.getText().toString()

答案 1 :(得分:0)

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

更改此内容:

a=Integer.parseInt(inputTwo);

a=Integer.parseInt(input.getText().toString());

答案 2 :(得分:0)

您的问题是,selectedItem方法中已分配onCreate,该方法在您选择了微调器中的任何项目之前运行,因此始终为null。将指定它的行移动到按钮单击侦听器的onClick方法中,它应该可以解决问题。

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