Java 如何使用onClick从一个文件类调用函数到另一个文件?
这可能是一个复制品,但我在上面找不到任何东西,所以就这样 我想用onClick将类中的函数从文件B.java调用为a.java。问题是,每次我添加行时都会出错。这是我的代码,我将在底部给出错误 A.javaJava 如何使用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
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();
}