Я пишу приложение для Android, и у меня есть 8 кнопок в одном представлении, которые имеют одну и ту же функцию, поэтому я хотел назначить одну и ту же функциональность каждой кнопке, используя цикл for, а не выписывать 8 фрагментов отдельного кода. Однако возникает проблема, когда я хочу использовать счетчик из цикла for в функции onClick, чтобы помочь запустить намерение, вот код:
//array of button ids
public int [] pickPlayers = { R.id.pick_player_1a, R.id.pick_player_2a, R.id.pick_player_3a, R.id.pick_player_4a, R.id.pick_player_1b, R.id.pick_player_2b, R.id.pick_player_3b, R.id.pick_player_4b};
//button to be used in for loop
public Button b;
//for loop to assign same functionality to buttons in pickPlayers array
for(int i = 0; i<pickPlayers.length; i++){
b = (Button) findViewById(pickPlayers[i]);
b.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent getContactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(getContactIntent, i);
}
});
};
Надеюсь, что все имеет смысл, спасибо всем, кто может помочь. :)
РЕДАКТИРОВАТЬ: Это ошибка, которую я получаю: не может ссылаться на не финальную переменную i внутри внутреннего класса, определенного в другом методе
Цикл for в моем методе oncreate, переменные и кнопки находятся вне