Java 获取微调器项并计算后,应用程序自动关闭

Java 获取微调器项并计算后,应用程序自动关闭,java,android,android-spinner,Java,Android,Android Spinner,每当我按下按钮进行计算时,应用程序就会自动关闭。这可能是由于微调器(我有一个单独的应用程序来测试没有微调器的其他字段),从微调器获取项目并在正确的条件下使用它的方法是否正确?感谢您的帮助 main活动 public class MainActivity extends Activity implements OnItemSelectedListener{ EditText height; EditText weight; EditText age; TextView calori

每当我按下按钮进行计算时,应用程序就会自动关闭。这可能是由于微调器(我有一个单独的应用程序来测试没有微调器的其他字段),从微调器获取项目并在正确的条件下使用它的方法是否正确?感谢您的帮助

main活动

public class MainActivity extends Activity implements OnItemSelectedListener{
  EditText height;
  EditText weight;
  EditText age;
  TextView calories;
  Button calculate;
  double h,w,wc,hc,m,wm,z,a,ac;
  Spinner spinner, spinner2;
  String choice;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initControls();
    // Spinner element
   Spinner spinner = (Spinner) findViewById(R.id.spinner);

   // Spinner click listener
    spinner.setOnItemSelectedListener(this);

   // Spinner Drop down elements
    List<String> activity = new ArrayList<String>();
    activity.add("Sedentary(little/no)");
    activity.add("Lightly Active(1-3days/week)");
    activity.add("Moderately(3-5days/week)");
    activity.add("Very Active(6-7days/week)");
    activity.add("Extremely Active(Physical Job/2x Training)");

    // Spinner element
  Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);

   // Spinner click listener
   spinner2.setOnItemSelectedListener(this);       
   // Spinner Drop down elements
    List<String> gender = new ArrayList<String>();
    gender.add("Male");
    gender.add("Female");        
    // Creating adapter for spinner
    ArrayAdapter<String> activityAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, activity);
    ArrayAdapter<String> genderAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, gender);
    // Drop down layout style - list view with radio button
    activityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spinner.setAdapter(activityAdapter);
    spinner2.setAdapter(genderAdapter);}

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    // On selecting a spinner item
    String item = parent.getItemAtPosition(position).toString();

    // Showing selected spinner item
    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();

}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}
private void initControls(){
      height=(EditText)findViewById(R.id.height);
      weight=(EditText)findViewById(R.id.weight);
      age=(EditText)findViewById(R.id.age);
      calories=(TextView)findViewById(R.id.calories);
      calculate=(Button)findViewById(R.id.calculate);
      calculate.setOnClickListener(new Button.OnClickListener()
      {public void onClick
      (View  v) { calculate();}});
}
private void calculate(){
      h=Double.parseDouble(height.getText().toString());
      w=Double.parseDouble(weight.getText().toString());
      a=Double.parseDouble(age.getText().toString());
      hc=h*6.25;
      wc=w*10;
      ac=a*5;
      m= wc+hc-ac+5;
      wm=wc+hc-ac-161;
      Log.e("Error","messagehere1");
      String choice = spinner.getSelectedItem().toString();
      switch(choice){
      case "Sedentary(little/no)":
          if(spinner2.getSelectedItem().equals("Male")){
              z=m*1.2;
              calories.setText(Double.toString(z));
          }
          else{
              z=wm*1.2;
          calories.setText(Double.toString(z));}
      case "Lightly Active(1-3days/week)":
          if(spinner2.getSelectedItem().equals("Male")){
              z=m*1.375;
              calories.setText(Double.toString(z));
          }
          else{
              z=wm*1.375;
          calories.setText(Double.toString(z));}
      case "Moderately(3-5days/week)":
          if(spinner2.getSelectedItem().equals("Male")){
              z=m*1.55;
              calories.setText(Double.toString(z));
          }
          else{
              z=wm*1.55;
          calories.setText(Double.toString(z));} 
      case "Very Active(6-7days/week)":
          if(spinner2.getSelectedItem().equals("Male")){
              z=m*1.725;
              calories.setText(Double.toString(z));
          }
          else{
              z=wm*1.725;
          calories.setText(Double.toString(z));}
      case "Extremely Active(Physical Job/2x Training)":
          if(spinner2.getSelectedItem().equals("Male")){
              z=m*1.9;
              calories.setText(Double.toString(z));
          }
          else{
              z=wm*1.9;
          calories.setText(Double.toString(z));}
          }           
}
更改这些行

// Spinner element
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Spinner element
Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);

这会奏效的

// Spinner element
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Spinner element
Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
spinner = (Spinner) findViewById(R.id.spinner);
spinner2 = (Spinner) findViewById(R.id.spinner2);