1

我对 OpenFeint 很陌生,实际上我今天开始将它集成到我的游戏中。我无法理解每个使用 OpenFeint 的开发人员都应该知道的一件简单的事情。以下是 OpenFeint 官方教程中解锁成就的示例:

new Achievement("achievementID").unlock(new Achievement.UnlockCB () {
  @Override public void onSuccess() {
      MyClass.this.setResult(Activity.RESULT_OK);
      MyClass.this.finish();
  }
  @Override public void onFailure(String exceptionMessage) {
        Toast.makeText( MyClass.this,
                "Error (" + exceptionMessage + ") unlocking achievement.",
                Toast.LENGTH_SHORT).show();
        MyClass.this.setResult(Activity.RESULT_CANCELED);
        MyClass.this.finish();
   }
});

问题是我不想在 onSuccess 或 onFailure 中完成我的活动,我只是不需要在这里做任何事情。如果我只是让这两种方法无代码,我的游戏会冻结并变得完全没有响应。我该怎么办?提前致谢。

PS你如何创建测试用户?我已经尝试了所有可能的电子邮件密码组合,但无法成功..

4

2 回答 2

1

将所有与 Internet 的通信放在 AsyncTask 中通常是一个好主意。不是每个人都有快速的互联网,所以这将确保主线程不会因此而锁定。

话虽如此,我认为 setResult 函数用于 startActivityForResult 构造。以这种方式创建的意图仅在活动完成时才会发送回原始类。因此,要解决此问题,您需要将代码放在单独的活动中。

于 2011-05-27T14:15:04.873 回答
0

我只是在我的实用程序类中编写了这个方法

public static void unlockAchievement(final String achievementId, final Activity context){
    final Achievement achievement = new Achievement(achievementId);
    achievement.unlock(new Achievement.UnlockCB() {

        @Override
        public void onSuccess(boolean newUnlock) {
            context.setResult(Activity.RESULT_OK);

        }

        @Override
        public void onFailure(String exceptionMessage) {                
            context.setResult(Activity.RESULT_CANCELED);
            Toast.makeText(context, "Error (" + exceptionMessage + ") unlocking achievement.", Toast.LENGTH_SHORT).show();
            FlurryAgent.onError("unlockingAchievement", exceptionMessage, this.getClass().getSimpleName());
        }

    });

}
于 2011-10-14T06:30:28.443 回答