2015-07-03 73 views
0

首先,讓我首先介紹一下Android開發的全新技術。當我點擊「這個」按鈕時,我試圖簡單地讓不同按鈕上的文字發生變化。我可以用setVisibility()改變可見性,所以我認爲我正確引用了按鈕 -​​ 但是當我嘗試setText()時,我得到錯誤:「Can not resolve method setText(Java.Lang.String)'」Android/Java - setText onbuttonclick中的按鈕無法解析方法

爲什麼它會允許我更改可見性而不是文本?我需要做些什麼來糾正問題?

下面是我試圖改變文本的其中一個按鍵的XML部分:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="New Button" 
    android:id="@+id/songbutton4" 
    android:layout_below="@+id/button4" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignRight="@+id/button4" 
    android:layout_alignEnd="@+id/button4" 
    android:visibility="invisible" /> 

這裏是onclick事件的代碼:

public void onbutton1click(View v){ 
//on click turn the 4 buttons invisible, and show the other 5 
    View b1 = findViewById(R.id.button1); 
    b1.setVisibility(View.INVISIBLE); 
    View b2 = findViewById(R.id.button2); 
    b2.setVisibility(View.INVISIBLE); 
    View b3 = findViewById(R.id.button3); 
    b3.setVisibility(View.INVISIBLE); 
    View b4 = findViewById(R.id.button4); 
    b4.setVisibility(View.INVISIBLE); 
    View b5 = findViewById(R.id.button5); 
    b5.setVisibility(View.INVISIBLE); 

    View sb1 = findViewById(R.id.songbutton1); 
    sb1.setVisibility(View.VISIBLE); 
    sb1.setText("hello"); // THIS IS WHERE THE ERROR OCCURS 
    View sb2 = findViewById(R.id.songbutton2); 
    sb2.setVisibility(View.VISIBLE); 
    View sb3 = findViewById(R.id.songbutton3); 
    sb3.setVisibility(View.VISIBLE); 
    View sb4 = findViewById(R.id.songbutton4); 
    sb4.setVisibility(View.VISIBLE); 
} 

回答

0

你這樣做在片段還是在活動?

無論如何,你應該做的:

Button sb1 = (Button) findViewById(R.id.songbutton1); 

這是我們如何添加元素。如果您在佈局中設置了Button小部件,那麼您需要引用此小部件。使用()聲明適當的類型和投射。

如果你是在片段而不是在Activity中做的,你還需要將它綁定到正確的視圖。

Button sb1 = (Button) v.findViewById(R.id.songbutton1); 

而且建議 - 不要在監聽器中引用視圖(小部件)。在聽衆之前做。

+0

完美的解決方案。我試着用正確的代碼替換掉了正在使用的錯誤的「查看」代碼,並且它顯然工作正常。感謝您的回答,以及有關在偵聽器之前引用小部件的建議。我會牢記這一點。 [是的,這是在一個活動] – David

0

首先分配按鈕的變量,即:Button btnSong = (Button) findViewById(R.id.songbutton4);
然後設置一個onclick偵聽到按鈕通過該方法​​這將需要你聲明一個新onClickListener按鈕內部和方法將被創建在其中u能放置上述代碼下的方法。或者添加一個XML屬性,將該按鈕直接指向該方法。