从其他类调用静态方法

时间:2012-04-16 19:31:17

标签: java android scoreloop

所以我在将scoreloop集成到我的游戏中时遇到了一些问题。我使用用c ++编写的cocos2dx并使用ndk。主应用程序类派生自activity而不是android.app.application。添加按钮到布局并使用它来显示记分板或提交分数有效,但它不连接到互联网。我在这里找到了解决方案:scoreloop support forum或更具体的

  

是的,使用libgdx似乎是个问题。 libgdx带来了自己的Application类,它实际上源自Android的Activity,而不是Application。来自libgdx的helloworld示例根本没有附带(Android)Application类,这里是如何添加一个:

     
    

创建一个扩展android.app.Application的新类(不是com.badlogic.gdx.backends.android.AndroidApplication)

         

在AndroidManifest.xml中找到标记和创建的类的名称作为属性:android:name =“YourApplication”

         

将public void onCreate()方法添加到该类并在那里初始化Scoreloop。

  

所以我创建了这个:

public class scoreLooped extends android.app.Application{
public void onCreate(Bundle savedInstanceState){
    ScoreloopManagerSingleton.init(this, "redacted");
} 
 public void onTerminate()
 {
     ScoreloopManagerSingleton.destroy();
 }

}

我从我的主要活动类创建这个类:

public class wordsweeper extends Cocos2dxActivity implements OnScoreSubmitObserver{
private Cocos2dxGLSurfaceView mGLView;
private static scoreLooped a;

protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    wordsweeper.a = new scoreLooped();
    //Set the observer equal to an instance of this class
    ScoreloopManagerSingleton.get().setOnScoreSubmitObserver(this);

,最后一行是崩溃的地方,出现错误“引起:java.lang.IllegalStateException:必须先调用ScoreloopManagerSingleton.init()”所以很明显我的scoreLooped类不会调用scoreloopmanager。我已经考虑过使用scorelooped类来提交,检索记分板,但似乎在没有扩展活动的情况下我不能这样做。我对java很陌生,所以我可能会遗漏一些明显的东西,所以如果有人能指出我正确的方向,那将会很棒。

1 个答案:

答案 0 :(得分:0)

您似乎需要创建自己的Application类并在那里调用ScoreloopManagerSingleton.init()。请参阅此处的答案,其中引用了一些示例文档:http://support.scoreloop.com/discussions/problems/789-illegalstateexception-scoreloopmanagersingletoninit-can-be-called-only-once