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



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

我尝试使用 android:on_click="myfunction()"activity_main.xml 调用它,但这只能从 MainActivity.java 调用。我也尝试使用onClick侦听器,但我似乎无法让它工作。

到目前为止,我有这个:

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

但这表明:

; Expected

这边onClick() *here* {.

我不确定这是否是正确的方法,或者

是否有其他方法,或者我是否没有正确格式化。我想做的只是当按下按钮时,它会调用myfunction()。任何帮助将不胜感激。谢谢!

试试这个:

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

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

以下是setOnClickListener的简化 lambda 形式,如果您将现有内容替换为以下内容,它应该可以工作:

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

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

最新更新