我对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中完成我的活动,我不需要在这里做任何事情。如果我只是让这两个方法没有代码,我的游戏就会冻结,变得完全没有反应。我该怎么办?提前谢谢。
附注:如何创建测试用户?我尝试了所有可能的电子邮件密码组合,但都不能让它去..
发布于 2011-05-27 22:15:05
这通常是一个好主意,把你与互联网的所有交流都放在一个AsyncTask中。并不是每个人都有快速的互联网,所以这将确保主线程不会因此而锁定。
也就是说,我认为在startActivityForResult构造中使用了setResult函数。只有在活动完成时,才会将以这种方式创建的意图发送回原始类。因此,要解决此问题,您需要将代码放在单独的活动中。
发布于 2011-10-14 14:30:28
我只是在我的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());
}
});
}https://stackoverflow.com/questions/6153261
复制相似问题