解锁OpenFeint中的成就

时间:2011-05-27 13:58:46

标签: android achievements openfeint unlock

我是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中完成我的活动,我只是不需要在这里做任何事情。如果我将这两种方法保持无代码,我的游戏冻结就会变得完全没有反应。我该怎么办?提前谢谢。

P.S。你如何创建测试用户?我已经尝试了每一个电子邮件密码组合,但是无法让它去...

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我只是在我的Utility类中编写了这个方法

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());
        }

    });

}