16

http://developer.android.com/training/location/retrieve-current.htmlから位置データを取得する前に、ユーザーのデバイスに Google Play サービスがあることを確認するために提供されたコードをリサイクルしています。IDE にコピー アンド ペーストすると、「connectionResult」も「getSupportFragmentManager」も定義されていないため、Eclipse は行内のエラーを正しく指摘します。

int errorCode = connectionResult.getErrorCode();

errorFragment.show(getSupportFragmentManager(),
                    "Location Updates");

問題を解決するには、上記の ConnectionResult connectionResult という変数を作成する必要がありますか? 2番目の修正方法がわかりません。

さらに、ライン

mLocationClient = new LocationClient(this, this, this);

さらにページに沿って、LocationClient コンストラクターを満たさない MainActivity クラスを配置することを提案し、別のエラーを引き起こします。

更新: チュートリアルの別の問題。チュートリアルでは、ここでは作成されていない LocationResult クラスを参照しています: http://developer.android.com/training/location/receive-location-updates.html。これをどのように/どこで定義すればよいですか?

4

2 に答える 2

35

チュートリアルは誤解を招くものです。Google Play サービスが存在することを確認する場合は、次の手順を実行します。

int errorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (errorCode != ConnectionResult.SUCCESS) {
  GooglePlayServicesUtil.getErrorDialog(errorCode, this, 0).show();
}

存在しない場合は、適切なエラー ダイアログが自動的に表示されます。

あなたの2番目の問題に。チュートリアルの残りの部分に従う必要があります。実装する必要がありGooglePlayServicesClient.ConnectionCallbacksGooglePlayServicesClient.OnConnectionFailedListener使用して locationclient を作成する場合new LocationClient(this, this, this);

onConnected注:メソッドがコールバックで呼び出されるまで、locationclient を使用しないでください。

于 2013-05-31T06:17:12.063 に答える
-1

チュートリアルに従って同じエラーが発生しましたが、提供されたコード サンプルは正しく実装されているようです。

/**
 * Verify that Google Play services is available before making a request.
 *
 * @return true if Google Play services is available, otherwise false
 */
private boolean servicesConnected() {

    // Check that Google Play services is available
    int resultCode =
            GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);

    // If Google Play services is available
    if (ConnectionResult.SUCCESS == resultCode) {
        // In debug mode, log the status
        Log.d(LocationUtils.APPTAG, getString(R.string.play_services_available));

        // Continue
        return true;
    // Google Play services was not available for some reason
    } else {
        // Display an error dialog
        Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 0);
        if (dialog != null) {
            ErrorDialogFragment errorFragment = new ErrorDialogFragment();
            errorFragment.setDialog(dialog);
            errorFragment.show(getSupportFragmentManager(), LocationUtils.APPTAG);
        }
        return false;
    }
}

http://developer.android.com/shareables/training/LocationUpdates.zip

于 2014-03-22T23:53:47.113 に答える