以下是使用BaseGameUtils Library和Google Play服务库实现的两项活动[实际问题转到此代码的末尾]。 这是活动A
import com.google.example.games.basegameutils.BaseGameActivity;
public class A extends BaseGameActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//button to start play managed from layout
public void startPlay(View view) {
startActivity(new Intent(A.this, B.class));
}
// from layout i m managing signin onclick
public void signInControl(View view) {
beginUserInitiatedSignIn();
}
// from layout i m managing signout onclick
public void signOutControl(View view) {
signOut();
// show sign-in button, hide the sign-out button
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
@Override
public void onSignInFailed() {
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}
@Override
public void onSignInSucceeded() {
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
}
}
现在我的下一个活动B
import com.google.example.games.basegameutils.BaseGameActivity;
public class B extends BaseGameActivity {
int MY_SCORE = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
subMitScore();//
}
private void subMitScore() {
// TODO Auto-generated method stub
if (isSignedIn()) {
getGamesClient().submitScore(
getString(R.string.leaderboard_total_scores), MY_SCORE);
} else {
Log.d("not signed", "Not signed in");
}
}
@Override
public void onSignInFailed() {
// TODO Auto-generated method stub
Log.d("sigin failed", "inside on onSignInFailed");
}
@Override
public void onSignInSucceeded() {
// TODO Auto-generated method stub
Log.d("sigin succeded", "inside on onSignInSucceeded");
}
}
使用上面的代码可以成功登录到活动A的谷歌游戏中心,这是一个BaseGameActivity,我需要在活动B提交我的分数,这也是一个BaseGameActivity,但是在活动B内我总是得到isSignedIn()为假,所以submitscore代码永远不会被调用所以我的确切问题是我如何从活动B提交我的游戏分数,因为我的游戏在活动B结束,我的总得分在B。
注意:尝试了来自 - here和here但未获得任何结果的解决方案。
**
**
刚编辑的活动B代码
在onSignInsucceeded()
中调用了subMitScore()方法像
@Override
public void onSignInSucceeded() {
// TODO Auto-generated method stub
submitScore()
}
以前我的onSignInSucceeded()没有被调用[不确切知道为什么]但是上面的东西解决了我的问题。
答案 0 :(得分:1)
您在Activity onCreate方法中提交了分数。在活动生命周期中的那一点,Google Play游戏服务客户端未连接,它将在稍后连接。尝试稍后提交分数(例如在onSignInSucceeded方法中)。
一般来说,以这种方式提交分数可能不是一个好主意。游戏结束后,在正常的游戏过程中提交分数&活动运行时间。