2014-11-23 44 views
0

我有以下代碼:變更Android按鈕背景動態在內部類

public class Tab1 extends Fragment { 

    private String packageName = MainActivity.getStringPackageName(); 
    private int buttonAmount = MainActivity.getButtonAmountTab1(); 
    private Button[] button = new Button[buttonAmount + 1]; 
    private Sound sound; 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     sound = MainActivity.getSound(); 
     // Log.i("MyActivity", className); 

     View rootView = inflater.inflate(R.layout.fragment_tvtotal, container, false); 

     for (int i = 1; i < buttonAmount + 1; i++) { 
      String buttonID = "tv_total_sound" + i; 
      int resID = getResources().getIdentifier(buttonID, "id", packageName); 
      final int audioID = getResources().getIdentifier(buttonID, "raw", packageName); 
      button[i] = (Button) rootView.findViewById(resID); 
      //registerForContextMenu(button[i]); 
      button[i].setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        sound.playSound(audioID); 
        button[1].setBackgroundResource(R.drawable.button_active); 
       } 
      }); 
     } 
     return rootView; 
    } 
} 

現在,而不是改變所述第一按鈕的背景(按鈕[1]),我想改變按鈕的背景被按下。 當我在onClick中使用按鈕[i] ...我得到一個錯誤,我從內部類訪問,它應該被聲明爲final。有沒有辦法做到這一點?

回答

1

您單擊從PARAM View對象,所以:

v.setBackgroundResource(R.drawable.button_active);

+0

謝謝,它的工作! – Stef 2014-11-23 11:06:14

+0

標記爲已答覆,謝謝;) – asylume 2014-11-24 09:49:50

0

使用 '這個' 您的onclick事件裏面:

This.setBackgroundResource.... 
+0

this.setBackgroundResource ...「無法解析方法」 – Stef 2014-11-23 11:05:08

0

Button.setBackgroundResource(R.drawable.yourResource);