Java 创建游戏和Android游戏之间的接口

Java 创建游戏和Android游戏之间的接口,java,android,facebook,Java,Android,Facebook,我正在尝试在我正在创建的android游戏中实现Facebook SDK 我已经创建了一个主游戏,在那里我所有的逻辑都发生了,我已经创建了一个使用主游戏的Android版本。希望这是有意义的 无论如何,为了在我的主代码和android版本的代码中按下一个按钮,我试图使用一个界面来完成这一点,但我一直得到以下错误 致命异常:GL56457线程 java.lang.NullPointerException 我不确定我做错了什么,希望能得到任何帮助。我已经把代码放在下面了 FacebookInterf

我正在尝试在我正在创建的android游戏中实现Facebook SDK

我已经创建了一个主游戏,在那里我所有的逻辑都发生了,我已经创建了一个使用主游戏的Android版本。希望这是有意义的

无论如何,为了在我的主代码和android版本的代码中按下一个按钮,我试图使用一个界面来完成这一点,但我一直得到以下错误


致命异常:GL56457线程 java.lang.NullPointerException

我不确定我做错了什么,希望能得到任何帮助。我已经把代码放在下面了

FacebookInterface.java(主版)

InputHandler.java(主)

所以我把它作为这个活动的一部分来实现,我得到了错误。当我按下按钮时,它是否应该在logcat中显示我在Android中完成的代码


有人能帮忙吗?

我通常的做法有点像你,创建一个接口,一些函数,通过它调用MainActivity,并在核心项目的主游戏类中初始化它

Game.java

    public static FacebookInterface myRequestHandler;

    public Game(FacebookInterface handler) {
         myRequestHandler = handler;
    }

    @Override
    public void create() {
         setScreen(new Splash());
    }

    @Override
         public void dispose() {
         super.dispose();
    }

    etc...
然后我在任何类中调用它(不要忘记导入Game类),例如,使用

    Game.myRequestHandler.FacebookShare(); 

试一试,希望它能起作用。

可能会有更大的问题,但它看起来像是未初始化的
InputHandler
中的变量,因此
myWorld
为空(以及按钮)。

facebook接口fbInterface
是定义而不是初始化,要初始化类,必须创建它的实例。由于您有接口,您可能需要创建实现
FacebookInterface
接口的类

您可以使用匿名类

FacebookInterface fbInterface = new FacebookInterface(){
    @Override
    public void FacebookShare(){
        Gdx.app.log("AndroidGame","Hello Android");
   } 
}

如果你想让我们帮助你,请在com.gksoftworks.ECHelpers.InputHandler.toucup(InputHandler.java:151)com.badlogic.gdx.backends.android.androidput.processEvents(AndroidInput.java:360)上发布堆栈跟踪异常:GLThread 56457 java.lang.NullPointerExceptionandroid.opengl.GLSurfaceView$GLThread.guarderrun(GLSurfaceView.java:1523)中的com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:498)中的android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)中的代码是否完整,但在您提供的代码片段中,您没有实例化任何字段,这可能是其中一个原因,如果你要实例化它们,你能告诉我们输入句柄中哪一行是151吗;不要添加完整的代码。我已经编辑了上面的文章,以显示整个输入处理程序。第151行是;fbInterface.FacebookShare();你能告诉我们你是如何实例化fbInterface的吗?因为您在这一行中有错误
fbInterface.FacebookShare()
唯一可以为空的是fbInterface`有趣,其余的按钮都能正常工作,即打开google play store的Rate按钮可以正常工作,这就是为什么我认为它已经被这一点初始化了。@user3489088-编辑了不同方法的答案。好的,这样做我仍然会在LogCatThanks中出现NullPointerException,这确实修复了
NullPointerException
,但是我该如何在android应用程序中使用该界面呢?如果我尝试
public void FacebookShare(){Gdx.app.log(“AndroidGame”,“Hello Android”);}
在Android应用程序中,它不会显示应该显示在日志猫中某个位置的Hello Android,除非您关闭了日志记录,尝试将其替换为android
Log.i
无论我运行哪个应用程序,它都会显示在LogCat中,也就是说,如果我运行桌面版本,我也会得到它。我有两个应用程序都继承了你看到的主应用程序。我是否只是将您的代码放入android应用程序的主活动中?InputHandler在主应用程序中。由于它使用的是android日志,我认为如果你将它与android一起使用会更好,但我不认为它所做的一切都是日志记录,所以我认为最好是通过构造函数将
FacebookInterface
传递给你的处理程序。你的建议奏效了。非常感谢你的帮助。
    public static FacebookInterface myRequestHandler;

    public Game(FacebookInterface handler) {
         myRequestHandler = handler;
    }

    @Override
    public void create() {
         setScreen(new Splash());
    }

    @Override
         public void dispose() {
         super.dispose();
    }

    etc...
    Game.myRequestHandler.FacebookShare(); 
FacebookInterface fbInterface = new FacebookInterface(){
    @Override
    public void FacebookShare(){
        Gdx.app.log("AndroidGame","Hello Android");
   } 
}