Java 如何使用onClick从一个文件类调用函数到另一个文件?

Java 如何使用onClick从一个文件类调用函数到另一个文件?,java,android,Java,Android,这可能是一个复制品,但我在上面找不到任何东西,所以就这样 我想用onClick将类中的函数从文件B.java调用为a.java。问题是,每次我添加行时都会出错。这是我的代码,我将在底部给出错误 A.java import com.example.app.B; public class MainService extends Service { private CallFunc callFunc; private Button btn; public void onCr

这可能是一个复制品,但我在上面找不到任何东西,所以就这样

我想用onClick将类中的函数从文件B.java调用为a.java。问题是,每次我添加行时都会出错。这是我的代码,我将在底部给出错误

A.java

import com.example.app.B;

public class MainService extends Service
{
    private CallFunc callFunc;
    private Button btn;

    public void onCreate()
    {
        callFunc = new CallFunc();
        btn = new Button(this);

        //Code for setOnClickListener
        @Override
        public void onClick(View v)
        {
            callFunc();
        }
    }
}
B.java

public class CallFunc
{
    public CallFunc()
    {
        //Stuff to do
    }
}
我犯了一个错误

The method callFunc() is undefined for the type new View.OnClickListener(){}

您的
B.java
中包含的是构造函数而不是方法。构造函数是一种特例方法,在创建该类的实例时调用它。它用于正确初始化和填充类的新实例

你可能想做的是:

public class CallFunc
{
    public CallFunc()
    {
        // this is the constructor
        // initialise the class instance here
    }

    public void someMethod()
    {
        // a method you can call
        // perform actions here
    }
}
然后在MainService的
onCreate()
中,您应该:

@Override
public void onClick(View v)
{
    callFunc.someMethod();
}

然而,当服务没有UI时,您正在扩展服务并使用UI组件(按钮和onClick)。您确定不想使用活动吗

在您的CallFunc类中

//you are not calling your function:
import com.example.app.B;

 public class MainService extends Service
{
private CallFunc callFunc;
private Button btn;

public void onCreate()
{
    callFunc = new CallFunc();
    btn = new Button(this);

    //Code for setOnClickListener
    @Override
    public void onClick(View v)
    {
        callFunc.callFunc();//It is a good idea to use better method names. it looks like you are calling your constructor, not a method.
    }
 }
 }
public CallFunc()
{
   //Stuff to do
}
意味着它是构造函数。创建时会调用它。在这里
callFunc=newcallfunc()。
您可以将其包含到onClick方法中

@Override
public void onClick(View v)
{
    callFunc = new CallFunc();
}
更好的方法是向CallFunc类添加一个方法,因为该方法意味着您要做一些事情。你用那种方法做事。类是指像汽车这样的对象。汽车可以开。所以它应该有dirve()方法。那么car.drive()表示你开车。:)


创建该类的实例并调用方法
callFunc.yourMethod()我确定我不想使用活动。原因是,我使用它在使用WindowManager的其他应用程序上显示。到目前为止我一直都很成功。好的,只是以防万一。你的困难是初学者的,所以我想澄清一下,以防你选错了。
@Override
public void onClick(View v)
{
    callFunc.someMethod();
}