0

ボタンのデータを比較したいところに問題があります

package lynn.calculate.KaunterKalori;

import lynn.calculate.KaunterKalori.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.EditText;

public class CalculateAll extends Activity implements OnClickListener {


protected int totalKalori1;
protected int totalKalori2;
protected int totalKalori3;

EditText EstimateCalorie;
TextView TotalKaloriSehari;
TextView totalsarapan;
TextView totallunch;
TextView totaldinner;
TextView calorieneeds;
TextView resultDiff;

public CalculateAll() {

}

@Override
public void onCreate(Bundle savedInstancesState) {
    super.onCreate(savedInstancesState);
    setContentView(R.layout.calculate_all);

    View kiraButton = findViewById(R.id.buttonKiraAll);
    kiraButton.setOnClickListener(this);

    View bezaButton = findViewById(R.id.caloriediff);
    bezaButton.setOnClickListener(this);

    TotalKaloriSehari = (TextView) findViewById(R.id.JumlahKalori);
    totalsarapan = (TextView) findViewById(R.id.sarapantext);
    totallunch = (TextView) findViewById(R.id.lunchtext);
    totaldinner = (TextView) findViewById(R.id.dinnertext);
    EstimateCalorie = (EditText) findViewById(R.id.BMR);
    // calorieneeds = (TextView) findViewById(R.id.BMR);
    resultDiff = (TextView) findViewById(R.id.result);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        totalKalori1 = extras.getInt("totalBreakfast");
        totalKalori2 = extras.getInt("totalLunch");
        totalKalori3 = extras.getInt("totalDinner");
    }

    totalsarapan.setText(totalKalori1 + "");
    totallunch.setText(totalKalori2 + "");
    totaldinner.setText(totalKalori3 + "");



}

public void onClick(View v) {
    if (v.getId() == R.id.buttonKiraAll) {


     int TotalKalori = calculateTotalKalori(totalKalori1, totalKalori2,
                totalKalori3);
        TotalKaloriSehari.setText(TotalKalori + "");

    }

    else if (v.getId()== R.id.caloriediff) {

        int nilaikalori = Integer.parseInt(EstimateCalorie.getText()
                .toString());


        int bmr = calculatebmr(nilaikalori);

        String deskripsiKalori = describekalori(bmr);
        resultDiff.setText("kalori makanan" + TotalKalori + " calori  diperlukan " + bmr + "=" + deskripsiKalori); 
// --> this TotalKalori also can't be used


        Intent n = new Intent(this, MainActivity.class);
        startActivity(n);

    }

}




public int calculateTotalKalori(int totalKalori1, int totalKalori2,
        int totalKalori3) {
    return (int) (totalKalori1 + totalKalori2 + totalKalori3);

}

public int calculatebmr(int nilaikalori) {
    return (int) (nilaikalori);
}

private String describekalori(int bmr) { 

    if (bmr < TotalKalori ) { //<-- this TotalKalori can't be read/used
        return "bykkan makan";
    } else if (bmr == TotalKalori) {

        return "kekalkan jumlah kalori ini";

    } else if (bmr > TotalKalori) {

        return "kurangkan pengambilan kalori";

    } else
        return "oiii";

} 
}

最初のボタンbuttonKiraAllはinttotalKaloriを読み取り、次にtotalKaloriデータを使用して2番目のデータボタンcalorieDiffと比較したいのですが、totalKaloriを2番目のボタンで読み取るにはどうすればよいですか?だから私は比較をすることができます

4

3 に答える 3

0

int TotalKaloriをグローバルに1回だけ宣言し(宣言したセクションでprotected int totalKalori1; protected int totalKalori2;...)、次のように両方のボタンに使用します。in button1 TotalKalori =calculateTotalKalori(totalKalori1、totalKalori2、totalKalori3); この値はグローバルであるため、button2は、必要な場所でTotalKaloriと比較部分を使用するだけで、すでにこの値にアクセスできます。

于 2012-05-26T15:54:39.743 に答える
0

これはスコーピングの問題です。onClickイベントでローカルにint TotalKaloriを宣言しています。

totalKalori1で行ったように宣言すると、動作するはずです

于 2012-05-24T22:05:47.290 に答える
0

または、getTag(); を使用できます。setTag(); ボタンに変数を保存するには...

必要なデータに setTag を使用します

     myButton.setTag("fun Stuff"); 

次に、リスナーでタグを取得します (型キャストを行う必要があります)。

         OnClickListener myListner = new OnClickListener() {
             public void onClick(View view) {
                 doSomethingAwesome(view, (String) view.getTag());
             }
         };
于 2012-05-25T00:03:49.930 に答える