如何在Android Java中单击按钮时从MainActivity以外的类调用函数

时间:2018-12-28 18:42:18

标签: java android onclick

我想在Android中单击按钮时调用一个函数。到目前为止,所有示例似乎只能从MainActivity.java调用它,但是我想从其他类调用它。我该怎么办?

我尝试使用activity_main.xmlandroid: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 :(得分:1)

尝试:

onoroff.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               myfunction();
            }
        });

答案 1 :(得分:0)

您的onClick函数未正确覆盖...方法签名不正确,没有@Override注释(请看侯赛因·比拉勒的回答)。避免这种情况的好方法是使用自动完成的Android Studio提供的功能。

答案 2 :(得分:0)

以下是setOnClickListener的简化的lambda形式,如果将以下内容替换为以下内容,它将可以使用:

b.setOnClickListener((View v) -> {
    myfunction();
});

答案 3 :(得分:0)

您应该在onClick函数上方添加@Override批注。好吧,您不能以非静态方法访问静态函数。如果要在另一个类中访问该函数,请将该函数设为静态,并使用编写该函数的类的名称对其进行访问。非静态函数只能由该类的实例调用。