Как вызвать метод с параметром 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() - Это метод, назначенный buttons 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);
    }

});