나는 그것을 탐구하기 전에 Android에 매우 익숙하며 지난 달에 Java를 배우기 시작했습니다. 첫 번째 간단한 앱을 개발하는 동안 충돌이 발생했습니다. 이 장애물의 대부분은 온라인으로 임의의 튜토리얼 덕분에 뛰어 올랐습니다. 내 코드는 아주 중요한 메시지입니다. 모든 팁을 부탁드립니다.다른 클래스의 변수를 어떻게 변경합니까?
위의 질문은 상당히 광범위하지만, 내가하고 싶은 것은 이것입니다. 본질적으로 혈중 알코올 농도 계산기/음료수 보관 인입니다. 기본 레이아웃 : http://i.imgur.com/JGuh7.jpg
아래쪽 버튼은 그냥 평범한 버튼,하지 ImageButtons (그 문제가 있었다) 다음은 하나의 몇 가지 예제 코드입니다 :
<Button android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_marginRight="5dp"
android:background="@drawable/addbeer"/>
버튼 및 텍스트 뷰는 main.xml에에 모두 .
나는 Global.java라는 클래스에 정의 된 변수가 있습니다
package com.dantoth.drinkingbuddy;
수입에는 android.app.Activity를;
공용 클래스 글로벌 활동 {
public static double StandardDrinks = 0;
public static double BeerOunces = 12;
public static double BeerPercentAlcohol = .05;
public static double BeerDrink = BeerOunces * BeerPercentAlcohol;
public static double BeerDrinkFinal = BeerDrink * 1.6666666;
public static double ShotOunces = 1.5;
public static double ShotPercentAlcohol = .4;
public static double ShotDrink = ShotOunces * ShotPercentAlcohol;
public static double ShotDrinkFinal = ShotDrink * 1.6666666;
public static double WineOunces = 5;
public static double WinePercentAlcohol = .12;
public static double WineDrink = WineOunces * WinePercentAlcohol;
public static double WineDrinkFinal = WineDrink * 1.6666666;
public static double OtherOunces;
public static double OtherPercentAlcohol;
public static double OtherDrink = OtherOunces * (OtherPercentAlcohol * .01);
public static double OtherDrinkFinal = OtherDrink * 1.6666666;
public static double GenderConstant = 7.5; //9 for female
public static double Weight = 180;
public static double TimeDrinking = 60;
public static double Hours = TimeDrinking/60;
public static double Bac = ((StandardDrinks/2) * (GenderConstant/Weight)) - (0.017 * Hours);
}
마지막 변수가 중요한 부분을 확장합니다. 그것은 관련된 요인에 따라 BAC를 계산합니다.
맥주 추가 버튼 (Button01)을 누르면 표준 맥주에 맥주 1 잔을 마시 며 1을 더합니다. Bac 수식의 다른 변수에는 Global.java에 할당 된 값이 있습니다.
맥주 버튼 물건을 내 정규 수업에 할 수있는 코드, drinkingbuddy.java : 나는 계산을 클릭하면
내 인식으로public class DrinkingBuddy extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.Button01);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Global.StandardDrinks = Global.StandardDrinks + Global.BeerDrinkFinal;
Toast.makeText(DrinkingBuddy.this, "Mmmm... Beer", Toast.LENGTH_SHORT).show();
}
});
이 StandardDrinks 지금, 그러나 1의 값을 가져야한다 BAC 버튼 (Button05)은 StandardDrinks가 여전히 0으로 설정된 것처럼 변수 Bac을 출력합니다. BAC 계산 버튼 (Button05)의 코드는 다음과 같습니다.
버튼 button4 = (버튼) findViewById (R.id.Button05)); button4.setOnClickListener (새 OnClickListener를() { @Override 공공 무효 온 클릭 (보기 V) {
하여 텍스트보기에 다음 그것은 출력 TextView texty;
texty = (TextView) findViewById(R.id.texty1);
texty.setText("Your BAC is " + Global.Bac);
}
});
:. "당신의 BAC는 -0.017이다는"이것은 혈중 알코올 농도입니다 만약 StandardDrinks가 여전히 0 인 경우 클래스의 의사 소통에 문제가있는 것이 분명합니다. 누구든지 나를 도울 수 있습니까?
다른 요소는 무게, 시간, 음주 시간 및 알코올 % 등입니다.)은 최종 사용자가 설정에서 해당 값을 변경할 수 있도록하기 때문에 변수입니다.
전 세계 변수가 프로그래밍 스타일이 좋지 않다고 들었 습니다만, 이것이 작동하기 위해 가장 가까이에 왔습니다. 그것을하는 다른 방법은 대단히 환영합니다!
포인트 1이 잘못되었습니다. 나는 '최종'으로 정의 된 변수를 변경할 수 없다는 것을 의미한다고 생각합니다. '정적'을 선언하면 인스턴스에 대한 변수 대신 클래스에 대해 하나의 변수가 있음을 의미합니다. 포인트 2가 정확합니다. –