问题描述
|
我是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中完成活动,我只是不需要在这里做任何事情。如果仅将这两种方法保留为无代码状态,我的游戏就会冻结,并且变得完全无响应。我该怎么办?提前致谢。
附言您如何创建测试用户?我已经尝试了所有可能的电子邮件密码组合,但无法使用。
解决方法
将与互联网的所有通信都放在AsyncTask中通常是一个好主意。并非每个人都有快速的互联网,因此这可以确保主线程不会因此而锁定。
话虽如此,我认为setResult函数用于startActivityForResult构造中。如果活动完成,以这种方式创建的意图只会发送回原始类。因此,要解决此问题,您需要将代码放在单独的活动中。
, 我只是在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());
}
});
}