我尝试将Google Play游戏服务与我的libGDX项目集成。
我在MainGame类中使用了这段代码:
public static PlayServices playServices;
public MainGame(PlayServices playServices)
{
this.playServices = playServices;
}
我将此代码放在MainMenu类中,我想在用户交互后显示登录Google的登录表单。
public static MainGame game;
public MainMenu(MainGame game)
{
this.game = game;
}
当我尝试运行应用时,出现以下错误:
错误:(77,68)错误:MainMenu类中的构造函数MainMenu不能 适用于给定类型;必需:MainGame发现:没有参数 原因:实际和正式的参数列表长度不同
答案 0 :(得分:1)
我猜你试图从Android模块向你的核心模块发送一个PlayServices实例。如果不是这种情况,请更正我并提供更多代码,因为我无法从您提供的信息中做出任何其他信息。
您需要使用界面。
在核心模块中创建一个界面。其中包含必要的功能,如connectToGooglePlayServices(),unlockAchivement()等。所有Android专用的功能。
public class AndroidLauncher extends AndroidApplication implements ThatInterfaceClass {
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
initialize(new MyGdxGame(this), config);
}
@Override
public void connectToGooglePlayServices() {
//connect to play services here
}
@Override
public void unlockAchivement() {
// unlock achivement etc.
}
}
此处的重要部分是将此作为参数提供给MyGdxGame
类构造函数,并实现ThatInterfaceClass
。
之后在MyGdxGame类的构造函数中添加一个参数。
public class MyGdxGame extends ApplicationAdapter {
public void MyGdxGame (ThatInterfaceClass interface) {
this.interface = interface;
}
// create etc... Other functions....
}
现在,为了连接到Google Play服务或解锁成就,请致电interface.connectToGooglePlayServices()
这是一个更好地解释这一点的链接。
https://github.com/libgdx/libgdx/wiki/Interfacing-with-platform-specific-code
编辑:似乎问题出现在您未提供的代码中。看看你应该如何创造这个例子 一个MainMenu类的实例。
MainGame mainGame = new MainGame(playServices);
MainMenu mainMenu = new MainMenu(mainGame);
我相信你正在构建MainMenu类:
MainMenu mainMenu = new MainMenu();
只要你有这个构造函数:
public MainGame(PlayServices playServices)
{
this.playServices = playServices;
}
如果没有PlayServices参数,则无法使用构造函数。但是你可以删除你的构造函数或删除PlayServices参数并像这样使用它:
MainMenu mainMenu = new MainMenu();
mainMenu.setPlayServices(playServices);
这是另一个像你的问题:
"Actual or formal argument lists differs in length"
编辑2 :您的MainMenu课程是否位于核心模块的 android模块?如果它不在 android模块中,则不能使用PlayServices类(也不能有实例)。另外,不要寻找解决方法只需使用接口来启动连接。正如我在最初的答案中所说的那样。
编辑3:最后:如果你之前已经讲过这个教程,那对我们两个人来说可能会更容易。 您在评论中发送的图片说无法解析playServices:
确保没有输入任何错误。
确保PlayServices接口位于核心模块中。
再次阅读教程。确保正确添加了库,依赖项等。
本教程告诉您创建AndroidLauncher活动。但是libGdx默认创建它。
除此之外,如果不坐在椅子上,我无法帮助你。有关您的下一个问题,请提供更多信息。还有很多。