Description:
У меня есть функция onClick под названием sum(View v). Как передать аргументы указанной функции? Я пробовал sum(View v,int a,int b), но как только я это сделаю, компилятор выдает ошибку как "Corresponding method handler 'public void sum(android.view.View)' not found". Во-первых, скажите мне, можно ли передать аргумент функции по щелчку так же, как я, или есть другой способ сделать то же самое.
desired java code:
public void sum(view v,int a,int b){
int c;
c =a+b;
}
найти несколько связанных вопросов на форуме, но не удовлетворился ответами. Попросите меня предоставить больше, если нужно. Спасибо.
How can I pass the arguments to the mentioned function?
Как правило, нет. Вы можете использовать лямбда-выражения привязки данных в макете, но это относительно сложная тема.
Вместо этого вы могли:
sum(View v) в onSumClicked(View v) и настройте, где бы вы ни использовали этот метод, чтобы он соответствовалonSumClicked(View v) позвонит на ваш sum(view v,int a,int b) с желаемыми значениями.Если вы жестко запрограммировали в xml атрибут onClick кнопки (скажем, это кнопка), например:
android:onClick = "sum"
тогда метод суммы должен иметь такую подпись:
public void sum(View v)
никакие другие параметры не разрешены для sum(), только для View v (даже если приложение будет компилироваться, но когда вы нажмете кнопку, приложение выйдет из строя).
Если вы хотите использовать эти 2 целочисленные переменные внутри sum(), вам необходимо объявить их на уровне класса.
Редактировать Итак, объявите 2 переменные в своем классе активности
int a = 0;
int b = 0;
вы можете установить их значения в любом месте этого класса, и когда вы нажмете кнопку, внутри sum() вы сможете получить к ним доступ.
А что, если мне нужно изменить значение переменной для каждого вызова функции в разных местах. Объявление переменной на уровне класса (или глобально) делает переменную постоянной для каждого вызова.
предположим, я объявил переменную a = 0 & b = 0. Теперь я хочу вызвать функцию sum (View v) в трех разных местах с разными значениями a и b. Как это сделать?
Вы не звоните sum(), он срабатывает при нажатии на кнопку, разве это не повод для вашего вопроса? Когда вы нажимаете кнопку, внутри sum() вы можете поместить код для использования a и b. Их значения могли быть изменены где угодно в классе.
теперь этот вопрос начал меня беспокоить. Ваш последний ответ меня полностью сбил с толку. не могли бы вы написать краткий код для того, что вы сказали выше?
В своем вопросе вы пишете У меня есть функция onClick под названием sum (View v), это означает, что вы хотите, чтобы эта функция выполнялась каждый раз, когда вы нажимаете кнопку, поэтому я полагаю, что в xml вы установили этот атрибут для кнопки: android:onClick = "sum". Разве это не так? Итак, sum() будет выполняться когда вы нажимаете кнопку. Теперь внутри корпуса sum() вы можете делать все, что хотите, с помощью a и b, например, показывать тост: Toast.makeText(this, "the value of a is = " + a, Toast.LENGTH_SHORT).show();
Все, что вы пишете выше, правильно. Теперь, если я вызываю эту функцию sum () в трех разных местах, значение «a» будет одинаковым в тосте для каждого вызова, потому что после того, как вы объявите значение «a», оно останется таким же во всех трех местах. Даже если вы измените «а», он изменится для всех трех мест. И мы не можем изменить значение «а» во время звонка. Потому что аргументы мы не передали. Извините за беспокойство.
a, вы жестяная банка сделаете это в любом месте вашего класса (в том числе внутри sum()), поэтому когда вы нажмете кнопку, и вы сможете управлять новым значением a внутри sum().
Ох, извините .... Как я могу совершить такую большую ошибку. Мы не можем вызвать функцию OnClick, потому что она будет вызывать каждый раз, когда я нажимаю кнопку. Так что тут не о спорах.
@AniketJadhav именно так
немного запутался. не могли бы вы написать код для того, что вы сказали выше? Я новичок в Android.