2013-11-22 2 views
0

Я пытаюсь передать изображение в качестве ссылки через индексированный массив.imagebutton pass reference

Я думал, что я мог бы установить идентификатор, а затем передать этот идентификатор, как например:

MyButton=(ImageButton) findViewById(R.id.imageButton1); 
MyButton.setId(0); 

Тогда в моем OnClick я хочу передать индекс «0»:

MyButton.setOnClickListener(new Button.OnClickListener() { 
public void onClick(View v) { 

    if (MyButton.isSelected()){ 
       Switch_Ctrl(0, OFF); 
     } 
}); 

индекс передается метод:

boolean Switch_Ctrl(char button_num, byte state){ 

      button_num.setImageResource(R.drawable.switch_off); 
      button_num.setSelected(false); 
} 

Я получаю ошибку не может решить метод setImageResource.

Поэтому я не могу использовать идентификатор «button_num». Не знаете, как я могу ссылаться на ImageButton?

+0

'button_num' является' char'. 'char' не имеет такого метода, как' setImageResource() '. Я рекомендую некоторые базовые обучающие программы Java, а затем вернусь и повторю попытку. Если вы хотите ссылаться на представление по его номеру, то вы уже это сделали! ('findViewById') Однако правильным решением является использование экземпляра' View', v, который передается 'onClickListener', который ссылается на нажатие кнопки. – Simon

ответ

0

Вы можете просто сохранить ссылку на кнопку и изменить ее onClick. Просто сделайте его переменной экземпляра в Activity или Fragment. Вы можете объявить кнопку отдельно, а затем инициализировать ее onCreate или onActivityCreated (после того, как findViewById стал доступен). Например

private Button myButton; 

@Override 
protected void onCreate(Bundle savedInstanceState){ 
    myButton = (Button) findViewById(R.id.button); 
    myButton.setOnClickListener(new Button.OnClickListener() { 

     public void onClick(View v) { 
      changeButtonBackground(v.getId()); 
     }); 

    } 
} 

//if doing this for multiple butons, check which one 
//was pressed and change the background 
private void changeButtonBackground(int id){ 
    if(id == R.id.myButton){ 
     myButton.setBackground(R.drawable.whatever); 
    } 
} 

Кроме того - я бы не установить идентификатор моей кнопки ни к чему другому, как 0. кнопку Your уже имеет идентификатор, это один вы определили в XML как андроида: ид = "@ + ID/whateveritis». Если вы не создаете представление программно, которое не существует в XML (например, если вы добавляли TextView в какой-либо родительский макет при нажатии этой кнопки), вам не нужно определять новый идентификатор.

+0

Я упростил свой вопрос, у меня есть другой метод, который мне нужно вызвать Switch_Ctrl, который не является onCLick, поэтому я не знаю, как ImageButtonjust ID .... Независимо от благодарности за помощь. Чтобы получить мою кнопку изображения от id, я просто используйте «ImageButton button_id = (ImageButton) findViewById (button_num); – user1895526

+0

Я в замешательстве - просто вызовите переключатель switchl из onClick. Проблема в том, что вы не знаете идентификатор кнопки, чтобы вы не знали, какую кнопку вы нужно изменить фон? Или что вы не знаете, какое изображение использовать для фона? – Rarw