2016-06-30 5 views
-2

私はBMR(Base Metabolic Rate)用の電卓を作っていますが、 "Calculate(btnCal)"ボタンを押すと、結果は "維持"されているTextViewに書き込まれません。私はそれを固定しようとしましたが、私はそれを動作させることはできません。Androidボタンしない何か

ここに私のコードです。

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

'public EditText height、weight、age;を必ず初期化してください。 TextView maintain; ' –

+0

あなたのボタンをクリックすると、' Spinner'にリスナーしか設定されません。 TextViewが更新されるためには、スピナーの選択項目を変更する必要があります。あなたの 'init()'メソッドで 'Spinner'のリスナーを設定できるかもしれません。 –

答えて

0

私の知るところでは、あなたはonClickコールバックを正しくセットアップしていませんでした。ボタンをクリックしたときにあなたがしているのはスピナーを設定することだけです。

ボタンがクリックされたときにテキストがあなたのTextViewに書かれているために、あなたはこのような何かにあなたのinitとのonClickメソッドを変更する必要がありますが:

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; 

    } 
} 

はそれが役に立てば幸い!

+0

ありがとう、私が家に帰るときあなたの解決策を試してみましょう。 –

+0

これは動作しますが、入力値を入力しても結果に0.0が表示されます。私はすべての変数をグローバルにしようとしました。 –

関連する問題