我是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。你如何创建测试用户?我已经尝试了每一个电子邮件密码组合,但是无法让它去...
答案 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());
}
});
}