Я пытаюсь сделать калькулятор для Android. Вот код для моих кнопок:Android калькулятор кнопки
int[] button_ids = {
R.id.BtnNum0, R.id.BtnNum1, R.id.BtnNum2, R.id.BtnNum3, R.id.BtnNum4, R.id.BtnNum5, R.id.BtnNum6,
R.id.BtnNum7, R.id.BtnNum8, R.id.BtnNum9, R.id.BtnAdd, R.id.BtnSub, R.id.BtnDiv, R.id.BtnMult,
R.id.BtnClear, R.id.equals
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditTextValue = (EditText) findViewById(R.id.editText1);
TVValue = (TextView) findViewById(R.id.textView1);
buttons = new ArrayList<Button>();
for(int id : button_ids) {
Button button = (Button)findViewById(id);
button.setOnClickListener(this);
buttons.add(button);
}
}
Как я могу изменить эту часть блока кода, где у меня не будет объявлять идентификаторы кнопок? (Например R.id.BtnNum0
)
int[] button_ids = {
R.id.BtnNum0, R.id.BtnNum1, R.id.BtnNum2, R.id.BtnNum3, R.id.BtnNum4, R.id.BtnNum5, R.id.BtnNum6,
R.id.BtnNum7, R.id.BtnNum8, R.id.BtnNum9, R.id.BtnAdd, R.id.BtnSub, R.id.BtnDiv, R.id.BtnMult,
R.id.BtnClear, R.id.equals
};
Я искал ответ, но я до сих пор не могу найти решение.
Я не думаю, что это возможно.Прежде всего, значения для переменных R.id будут генерироваться компилятором, и вам нужно будет получить к ним доступ только по значению id. – midhunhk
Я на самом деле думаю, что это довольно хороший способ справиться с этой проблемой. У вас нет дублирования кода и укажите, для каких кнопок следует использовать 'onClickListener'. –
Если вы действительно не хотите объявлять все идентификаторы кнопок, вы всегда можете просто создавать кнопки программно в цикле, а не в вашем XML. – chancea