Google APIクライアントを接続する別の方法はありますか?
私はオートコンプリートプレースを使用し、MYFRAGMENTのどこかにこのコードを使用する必要があります
_mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this).build();
_
私の問題
_enableAutoManage(this, GOOGLE_API_CLIENT_ID, this)
.addConnectionCallbacks(this).build();
_
this
をgetActivity()
に置き換えると、キャストに多くの問題があるため、対処できません。
この質問が馬鹿げている場合は助けてくれてありがとう。
enableAutoManage
を使用する場合は、アクティビティをFragmentActivity
に拡張する必要があります。 GoogleApiClient
の自動管理が機能するには、コールバックが必要です。したがって、最も簡単な解決策は、アクティビティに_extends FragmentActivity
_を追加することです。そうすれば、キャストは失敗せず、実行時にアプリがクラッシュします。
別の解決策は、APIクライアントを自分で管理することです。ビルダーからenableAutoManage
行を削除し、クライアントからconnect
/disconnect
を確認します。これを行う最も一般的な場所は、onStart()
/onStop()
です。何かのようなもの...
_@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(MainActivity.this)
.addApi(Places.GEO_DATA_API)
.addConnectionCallbacks(this).build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
mGoogleApiClient.disconnect();
}
_
返信が遅れて申し訳ありませんが、FragmentActivityを拡張するのではなく、AppCompatActivityを拡張できます...
public class YourActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener
.....
mCredentialsApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.enableAutoManage(this,this)
.addApi(Auth.CREDENTIALS_API)
.build();
フラグメントがFragmentActivityまたはAppCompatActivityで実行されている場合、次のようなことができます。
mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
.enableAutoManage((FragmentActivity) getActivity() /* FragmentActivity */, new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
// your code here
}
})
.addApi(Auth.GOOGLE_SIGN_IN_API, gso)
.build();
私の解決策は受け入れられた答えに似ていますが、ビルダーの2番目の署名を使用するため、connectionFailedListenerもコンストラクターに送信されます。
mGoogleApiClient.connect()
およびmGoogleApiClient.disconnect()
でそれぞれonStart()
およびonStop()
が続きます
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mGoogleApiClient = new GoogleApiClient.Builder(this /*context*/ , this /*connectedListener*/, this /**connectionFailedListener/)
.addApi(Places.GEO_DATA_API)
.build();
}