2016-08-11 47 views
1

我想使用四個togglebuttons(最終爲8,12或16),並根據切換到的位置給每個值賦予值。將togglebutton布爾值轉換爲整數值,然後在文本視圖中加在一起

所以toggle1會給的值1或0和toggle2會給兩個或零(TB4 4或0,TB8 8或0等)

我然後要添加的電流值的值所有按鈕組合在一起並以文本視圖顯示。

我剛剛開始使用前2個,但不知道如何將這些值存入displayDecimalAnswer方法。我明顯錯過了一些非常明顯的東西,因爲聽起來很簡單。

幫助我Obi Wan Kenobis你是我唯一的希望。

package com.example.android.binary04; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.CompoundButton; 
import android.widget.TextView; 
import android.widget.ToggleButton; 


import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.CompoundButton; 
import android.widget.TextView; 
import android.widget.ToggleButton; 


public class MainActivity extends Activity implements CompoundButton.OnCheckedChangeListener { 

ToggleButton toggle1; 
ToggleButton toggle2; 
ToggleButton toggle4; 
ToggleButton toggle8; 
TextView decimalAnswer; 

int totalValues; 
boolean toggle1Status; 
boolean toggle2Status; 
boolean toggle4Status; 
boolean toggle8Status; 

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


    toggle1 = (ToggleButton) findViewById(R.id.toggle1); 
    toggle2 = (ToggleButton) findViewById(R.id.toggle2); 
    toggle4 = (ToggleButton) findViewById(R.id.toggle4); 
    toggle8 = (ToggleButton) findViewById(R.id.toggle8); 
    toggle1.setOnCheckedChangeListener(this); 
    toggle2.setOnCheckedChangeListener(this); 
    toggle4.setOnCheckedChangeListener(this); 
    toggle8.setOnCheckedChangeListener(this); 
    decimalAnswer = (TextView) findViewById(R.id.decimal); 
} 


@Override 
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
    if (compoundButton == toggle1) { 
     if (isChecked) { 
      toggle1Status = true; 
     } else { 
      toggle1Status = false; 
     } 
    } else if (compoundButton == toggle2) { 
     if (isChecked) { 
      toggle2Status = true; 
     } else { 
      toggle2Status = false; 
     } 
    } 

} 
/** 
* Here I wanted to give a int value to boolean whether each togglebutton 
* is clicked or not. Then add the value of each button together 
*/ 

int valueOfOnes = (toggle1Status) ? 1 : 0; 
int valueOfTwos = (toggle2Status) ? 2 : 0; 
int answer = valueOfOnes + valueOfTwos; 



/** 
* Displays decimal answer. 
*/ 
public void displayDecimalAnswer(int answer) { 
    TextView decimalView = (TextView) findViewById(R.id.decimal); 
    decimalView.setText(String.valueOf(answer)); 
} 

} 

回答

2
 @Override 
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { 
    if (compoundButton == toggle1) { 
     if (isChecked) { 
      toggle1Status = true; 
     } else { 
      toggle1Status = false; 
     } 
    } else if (compoundButton == toggle2) { 
     if (isChecked) { 
      toggle2Status = true; 
     } else { 
      toggle2Status = false; 
     } 
    } 
displayDecimalAnswer(); 
} 

    /** 
    * Displays decimal answer. 
    */ 
    public void displayDecimalAnswer() { 
     int valueOfOnes = (toggle1Status) ? 1 : 0;//Since toggle1Status is class level variable it will be accessibible 
     int valueOfTwos = (toggle2Status) ? 2 : 0; 
     int answer = valueOfOnes + valueOfTwos; 

     TextView decimalView = (TextView) findViewById(R.id.decimal); 
     decimalView.setText(""+answer); 
    } 
+0

最好的,感謝工作正常。將添加一個月的其他按鈕。但要澄清: 1:您將displayDecimalAnswer添加到onCheckedChanged方法。 2:在displayDecimalAnswer方法內移動int,因爲它們是類級別的。 和3:更改了setText以包含空引號。這是做什麼的? – mmmartinnn

+0

1.由於您實現了切換列表的切換列表,因此它將是更新值的最佳位置。 2.首先,你應該嘗試使用局部變量,如果可能的話,一旦方法完成其工作,將會破壞局部變量。你有類級布爾值,所以它使用較少的全局變量。 3.我懶得寫(String.valueOf):)它會正常工作。 – MRX

+0

你是一位超級明星。我一直在做這個(我的第一個應用程序)兩個星期,終於有8個按鈕的工作。需要讓它看起來很漂亮,現在再添加一些功能。 :d – mmmartinnn