Как вызвать метод с параметром View на Android Studio
Я хочу вызвать этот метод
public void openButton(View view) {
Intent intent = new Intent(this, MainActivity.class);
this.startActivity(intent);
}
от простого метода, как это
public void simple(){
openButton();
}
но я не могу этого сделать, потому что openButton нуждается в одном представлении параметров. Как?
3 ответов
Ну, с кодом, который вы предоставили, вы обычно используете какой-то onCickListener
.
откройте XML-файл и добавьте android:onClick="openButton"
к кнопке, которую вы хотите вызвать этот метод. Так что ваш XML для кнопки будет выглядеть примерно так:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
. . .
android:onClick="openButton" />
это автоматически вызовет этот метод и передаст представление.
другой вариант, как BatScream упоминается в комментариях, это просто пройти в null
, поскольку вы все равно не используете представление. Однако это это плохая практика - она будет работать на этот раз, но в целом, вы должны следовать системе, которую использует Android. Просто иди с onClick
в XML.
Если вам нужно использовать simple
как есть, сделайте это так:
public void simple(){
openButton(null);
}
вы должны быть в состоянии сделать
button.performClick();
предполагая, что openButton()
- Это метод, назначенный button
s onClick
. Значит, где-то в вашем xml у вас, вероятно, есть Button
С android:onClick="openButton"
. Тогда, если у вас есть это Button
создан экземпляр и назначен переменной button
, назвав View
' s performClick()
метод назвали бы openButton()
простой. Просто передайте представление в аргументах.
Способ 1: если вы звоните openButton()
метод из файла макета, затем просто вызовите метод следующим образом, применив атрибут onClick
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Go to next screen"
. . .
android:onClick="openButton" />
Способ 2: если вы пытаетесь вызвать его из onclick кнопки, установив OnClickListener, то просто передайте представление, которое вы получаете внутри OnClickListener
' s onClick(View view)
метод следующим образом:
button.setOnClickListener(new OnClickListener(){
@override
public void onClick(View view)
{
openButton(view);
}
});