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);
}
}
# 1 楼答案
实际上,这一行
final String inputTwo=(String)getText(R.id.input);
不会给出任何值,所以这样做只是直接在按钮的onclick中获取它的文本更改此选项:
至:
# 2 楼答案
可以将值作为
String
获取,如下所示:# 3 楼答案
您的问题是
selectedItem
是在onCreate
方法中分配的,该方法在选择微调器中的任何项之前运行,因此总是null
。将分配给它的行移动到button click listener的onClick
方法中,应该可以解决问题类似地,您可能还需要将
inputTwo
变量移动到onClick
方法中,因此这也不会在创建时设置,也不会更新