2016-06-30 15 views
-2

Ich mache einen Rechner für BMR (Grundumsatz) und wenn ich die Schaltfläche "Calculate (btnCal)" drücken, schreibt es nicht die Ergebnisse in die TextView, die die "Wartung" ist. Ich habe versucht, es zu reparieren, aber ich kann es nicht funktionieren lassen.Android-Schaltfläche nicht etwas tun

Hier ist mein Code.

package com.example.leks.calmeter; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 


public class actCal extends AppCompatActivity implements View.OnClickListener 
{ 
    private double act_val; 
    public double mBMR, fBMR, BMR = 0; 
    public EditText height, weight, age; 
    TextView maintain; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_act_cal); 

     init(); 


    } 
    public void init() 
    { 
     Button btnCal; 
     btnCal = (Button) findViewById(R.id.btnCal); 
     btnCal.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) 
    { 


     Spinner spinner2 = (Spinner)findViewById(R.id.spinner2); 
     switch(view.getId()) 
     { 
      case R.id.btnCal: 
      { 
       Spinner spinner = (Spinner)findViewById(R.id.spinner); 
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        { 
         String SelectedItem = parent.getItemAtPosition(position).toString(); 
         if (SelectedItem.equals("Sedentary")) 
         { 
          act_val = 1.2; 
         } 
         if (SelectedItem.equals("Light")) 
         { 
          act_val = 1.375; 
         } 
         if (SelectedItem.equals("Moderate")) 
         { 
          act_val = 1.55; 
         } 
         if (SelectedItem.equals("Very Active")) 
         { 
          act_val = 1.725; 
         } 
         if (SelectedItem.equals("Extra Active")) 
         { 
          act_val = 1.9; 
         } 
        } 
        @Override 
        public void onNothingSelected(AdapterView<?> adapterView) { 

        } 
       }); 
       spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        @Override 
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        { 
         String SelectedItem = parent.getItemAtPosition(position).toString(); 
         if (SelectedItem.equals("Male")) 
         { 
          String heights = height.getText().toString(); 
          String ages = age.getText().toString(); 
          String weights = weight.getText().toString(); 
          double wght = Double.parseDouble(weights); 
          double hght = Double.parseDouble(heights); 
          int ageint = Integer.parseInt(ages); 
          mBMR = ((10 * wght) + (6.25 * hght) - (5 * ageint) + 5) * act_val; 
          maintain.setText(String.valueOf(mBMR)); 

         } 
         if (SelectedItem.equals("Female")) 
         { 
          //TODO Formula For Females here. 
         } 

        } 

        @Override 
        public void onNothingSelected(AdapterView<?> adapterView) { 

        } 
       }); 

      } 
     } 
    } 
} 
+0

Stellen Sie sicher, dass 'public EditText initialize height, weight, age; TextView pflegen; ' –

+0

Wenn Sie auf Ihren Knopf klicken, stellen Sie nur Zuhörer auf Ihrem' Spinner 'ein. Sie müssen das ausgewählte Element Ihres Spinner 's für die' TextView' ändern, um aktualisiert zu werden. Vielleicht könnten Sie den 'Spinner' Listener in Ihrer 'init()' Methode setzen. –

Antwort

0

Von dem, was ich sehe, haben Sie Ihren onClick-Rückruf nicht richtig eingerichtet. Wenn Sie auf die Schaltfläche klicken, wird nur ein Spinner eingerichtet.

Um den Text zu Ihrem Textview geschrieben haben, wenn die Schaltfläche geklickt wird, sollten Sie Ihre init und onClick Methoden zu so etwas wie dies ändern:

public void init() 
{ 
    Button btnCal; 
    btnCal = (Button) findViewById(R.id.btnCal); 
    btnCal.setOnClickListener(this); 

    // Getting a reference to the text view - change the id to match what you have in your layout file 
    maintain = (TextView) findViewById(R.id.maintain) 
} 

@Override 
public void onClick(View view) 
{ 


    Spinner spinner2 = (Spinner)findViewById(R.id.spinner2); 
    switch(view.getId()) 
    { 
     case R.id.btnCal: 
      // Setting the text - change to whatever text you want 
      maintain.setText("some text"); 

      // ... 
      break; 

    } 
} 

Hoffe, es hilft!

+0

Danke, werde deine Lösung versuchen, wenn ich nach Hause komme. –

+0

Es funktioniert, aber wenn ich die Eingabewerte gefüllt habe, zeigt das Ergebnis immer noch 0.0. Ich habe versucht, alle Variablen global zu machen. –