2013-08-20 32 views
0

我已經嘗試了很多不同的手段來達到我想要的效果,但是沒有什麼能夠讓這些按鈕做到他們應該做的......基本上我有14個按鈕。四與文本「X」,digitOne,digitTwo,digitThree和digitFour。然後,有10個包含「1」,「2」等,名爲「one」,「two」等。所有按鈕綁定到相同的OnClickListener,它將使用switch語句確定哪個按鈕被按下,然後找到最快的顯示按鈕(最初標記爲「X」的按鈕),並將該按鈕文本更改爲輸入的數字。我想要發生的是:非匿名私人OnClickListener類中的Switch語句不工作?

說別人點擊「5」按鈕。如果按下第一個按鈕,則第一個「數字」按鈕將從顯示「X」變爲「5」,以此類推,以此類推。這不是正在發生的事情......事實上,無論我嘗試過什麼,都沒有發生。甚至沒有錯誤......一個錯誤會很好,至少我會知道我的邏輯缺陷在哪裏。下面的代碼:

按鈕聲明:

one=(Button)findViewById(R.id.button1); 
    two=(Button)findViewById(R.id.Button2); 
    three=(Button)findViewById(R.id.Button3); 
    four=(Button)findViewById(R.id.Button4); 
    five=(Button)findViewById(R.id.Button5); 
    six=(Button)findViewById(R.id.Button6); 
    seven=(Button)findViewById(R.id.Button7); 
    eight=(Button)findViewById(R.id.Button8); 
    nine=(Button)findViewById(R.id.Button9); 
    zero=(Button)findViewById(R.id.Button0); 
    add=(Button)findViewById(R.id.buttonAdd); 
    digitOne=(Button)findViewById(R.id.Number1); 
    digitTwo=(Button)findViewById(R.id.Number2); 
    digitThree=(Button)findViewById(R.id.Number3); 
    digitFour=(Button)findViewById(R.id.Number4); 

    one.setOnClickListener(listener); 
    two.setOnClickListener(listener); 
    three.setOnClickListener(listener); 
    four.setOnClickListener(listener); 
    five.setOnClickListener(listener); 
    six.setOnClickListener(listener); 
    seven.setOnClickListener(listener); 
    eight.setOnClickListener(listener); 
    nine.setOnClickListener(listener); 
    zero.setOnClickListener(listener); 

的OnClickListener私有內部類(我想這是你叫什麼這是Activity類裏面。):

private OnClickListener listener = new OnClickListener(){ 



public void onClick(View button) { 
    switch(button.getId()){ 
    case R.id.Button0: 
     addANumber(0); 
     break; 
    case R.id.button1: 
     addANumber(1); 
     break; 
    case R.id.Button2: 
     addANumber(2); 
     break; 
    case R.id.Button3: 
     addANumber(3); 
     break; 
    case R.id.Button4: 
     addANumber(4); 
     break; 
    case R.id.Button5: 
     addANumber(5); 
     break; 
    case R.id.Button6: 
     addANumber(6); 
     break; 
    case R.id.Button7: 
     addANumber(7); 
     break; 
    case R.id.Button8: 
     addANumber(8); 
     break; 
    case R.id.Button9: 
     addANumber(9); 
     break; 

    } 
} 
}; 

最後,「addANumber」方法被稱爲:

public void addANumber(int i){ 
    if(digitOne.getText()=="X"){ 
     digitOne.setText(i); 
    }else if(digitTwo.getText()=="X"){ 
     digitTwo.setText(i); 
    }else if(digitThree.getText()=="X"){ 
     digitThree.setText(i); 
    }else if(digitFour.getText()=="X"){ 
     digitFour.setText(i); 
    } 
} 

我以前做過這個......我知道W I失去了一些東西如此明目張膽愚蠢的,值得在頭一巴掌......

+0

我覺得比較'String'應該使用'.equals()'儀式? – Sieryuu

+0

試試這個,從==改成equals。如果(digitOne.gettext()。equals(「X」)等等),這也有助於使用Log來查看你的代碼到達的位置,它甚至調用addANumber() ? – nedaRM

+0

無法完全理解你的問題,你控制進入onClick,然後切換大小寫不工作?或者你的onClick只是不被調用? – Sushil

回答

3

所有之前:

digitOne.getText()=="X"應該"X".equals(digitOne.getText())

需要在內容方面檢查字符串平等,不在參考範圍內。

什麼也沒有發生,因爲與==關你if狀況進行評估,以trueaddANumber()只會導致作爲空方法