我有一个应用应该是:
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);
}
}
答案 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
方法中,因此这也不会在创建时设置,也不会更新。