2017-10-06 1 views
1

처음으로 Google Play 서비스 리더 보드를 구현하려했지만 문제가있었습니다.여러 활동에서 GoogleApiClient 연결 문제

메인 액티비티에 리더 보드 버튼이 있습니다. 따라서 MainActivity에서 GoogleApiClient를 초기화합니다. 이제까지 좋은 점은 모두 - Google이 연결되고 빈 리더 보드입니다.

실제로 리더 보드를 채우는 점수는 두 번째 활동 인 GameActivity에서 가져옵니다. GoogleApiClient의 또 다른 인스턴스를 만들고 연결을 시도합니다. 하지만 .. apiClient.connect()를 호출 한 후에도 항상 실패합니다.

잘못된 것이 있습니까? 프로그램 전체에서 단 1 명의 고객 만 허용됩니까?

나는 초기화하는 활동 모두에서이 코드를 사용 :

apiClient = new GoogleApiClient.Builder(this) 
      .addApi(Games.API) 
      .addScope(Games.SCOPE_GAMES) 
      .enableAutoManage(this, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
        Toast.makeText(LevelSelector.this, "Failed to connect to google play", Toast.LENGTH_LONG).show(); 
       } 
      }) 
      .build(); 

내가 주요 활동

leaderboardTextView = (TextView) findViewById(R.id.leaderboard_button); 
    leaderboardTextView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      startActivityForResult(
        Games.Leaderboards.getLeaderboardIntent(apiClient, 
          getString(R.string.leaderboard_most_stars)), 0); 
     } 
    }); 

에서 리더를 호출하고 점수가 다른 활동에서 리더 보드에 제출

답변

1

앱에는 하나의 API 클라이언트 만 허용됩니다. apiClient을 public static으로 만들고 어떤 클래스에서든지 MainActivity.apiClient

을 사용하여 액세스하십시오.