Как вызвать функцию из класса, отличного от MainActivity, по нажатию кнопки в Android Java - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу вызвать функцию нажатием кнопки в Android.Кажется, что все примеры до сих пор могут вызывать его только из MainActivity.java, но я хочу вызвать его из другого класса.Как бы я это сделал?

Я пытался позвонить с activity_main.xml, используя android:on_click="myfunction()", но это можно вызвать только с MainActivity.java.Я также пытался использовать onClick слушатель, но я не могу заставить его работать.

Пока у меня есть это:

Button onoroff = (Button)findViewById(R.id.activate);
onoroff.setOnClickListener(new View.OnClickListener() {
    public void onClick()
    {
        myfunction();
    }
});

Но это показывает:

; Expected

Здесь onClick() *here* {.

Я не уверен, является ли это правильным способом, или есть другой способ, или я не отформатировал этоправильно.Все, что я хочу сделать, это когда кнопка нажата, она будет вызывать myfunction().Любая помощь очень ценится.Спасибо!

Ответы [ 4 ]

0 голосов
/ 28 декабря 2018

Вы должны добавить аннотацию @Override над функцией onClick.Ну, вы не можете получить доступ к статической функции в нестатическом методе.И если вы хотите получить доступ к этой функции в другом классе, сделайте эту функцию статической и получите к ней доступ с именем класса, в котором написана функция.А нестатические функции могут вызываться только экземпляром этого класса.

0 голосов
/ 28 декабря 2018

Ваша функция onClick переопределяется неправильно ... неверная подпись метода и аннотация @Override (см. Ответ Хуссейна Билала).Хороший способ избежать этого - использовать автозаполнение Android Studio.

0 голосов
/ 28 декабря 2018

Ниже приведена упрощенная лямбда-форма setOnClickListener, и она должна работать, если вы замените то, что у вас есть, следующим:

b.setOnClickListener((View v) -> {
    myfunction();
});
0 голосов
/ 28 декабря 2018

попробуйте это:

onoroff.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               myfunction();
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...