Android mGoogleApiClient.isConnected()返回null

Android mGoogleApiClient.isConnected()返回null,android,google-play-services,google-api-client,Android,Google Play Services,Google Api Client,我已经检查了所有的StackOverflow问题,并尝试了各种方法,但问题仍然存在 public class PlaceInfoActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { private static final String LOG_TAG = "PlaceInfoActiv

我已经检查了所有的StackOverflow问题,并尝试了各种方法,但问题仍然存在

public class PlaceInfoActivity extends ActionBarActivity implements
    GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

private static final String LOG_TAG = "PlaceInfoActivity";
private static final int GOOGLE_API_CLIENT_ID = 0;
private GoogleApiClient mGoogleApiClient;
TextView mTextView;
String content = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_place_info);

    mTextView = (TextView) findViewById(R.id.textView0);

    mGoogleApiClient = new GoogleApiClient
            .Builder(this)
            .enableAutoManage(this, 0, this)
            .addApi(Places.PLACE_DETECTION_API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

    Toast.makeText(this, Boolean.toString(mGoogleApiClient.isConnected()), Toast.LENGTH_SHORT).show();


    if (mGoogleApiClient.isConnected()) {

        PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
                PlaceLikelihood placeLikelihood = likelyPlaces.get(0);

                if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
                    content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
                if (placeLikelihood != null)
                    content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
                mTextView.setText(content);

                likelyPlaces.release();
            }
        });
    }
}

@Override
protected void onStart() {
    super.onStart();
    if (mGoogleApiClient != null)
        mGoogleApiClient.connect();
}

@Override
protected void onResume() {
    super.onResume();

    mGoogleApiClient.connect();
}

@Override
protected void onStop() {
    if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
        mGoogleApiClient.disconnect();
    }
    super.onStop();
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

@Override
public void onConnected(Bundle bundle) {

}

@Override
public void onConnectionSuspended(int i) {

} }
公共类PlaceInfoActivity扩展了ActionBarActivity实现
GoogleAppClient.ConnectionCallbacks,GoogleAppClient.OnConnectionFailedListener{
私有静态最终字符串日志\u TAG=“PlaceInfoActivity”;
私有静态final int GOOGLE_API_CLIENT_ID=0;
私人GoogleapClient MGoogleapClient;
文本视图mTextView;
字符串内容=”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u place\u info);
mTextView=(TextView)findViewById(R.id.textView0);
mgoogleapclient=新的Googleapclient
.Builder(本)
.enableAutoManage(this,0,this)
.addApi(Places.PLACE\u DETECTION\u API)
.addConnectionCallbacks(此)
.addOnConnectionFailedListener(此)
.build();
Toast.makeText(this,Boolean.toString(mGoogleApiClient.isConnected()),Toast.LENGTH_SHORT.show();
if(mgoogleapClient.isConnected()){
PendingResult结果=Places.PlaceDetectionApi.getCurrentPlace(mgoogleAppClient,null);
result.setResultCallback(新的ResultCallback(){
@凌驾
public void onResult(PlaceLikelihoodBuffer likelyPlaces){
place似然place似然=likelyPlaces.get(0);
if(placelikelike!=null&&placelikelike.getPlace()!=null&&TextUtils.isEmpty(placelikelike.getPlace().getName())
content=“最可能的位置:”+placelikelibility.getPlace().getName()+“\n”;
if(placelikelibility!=null)
content+=“在那里的变化百分比:”+(int)(placelikelibility.getlikelibility()*100)+“%”;
mTextView.setText(内容);
likelyPlaces.release();
}
});
}
}
@凌驾
受保护的void onStart(){
super.onStart();
if(mGoogleApiClient!=null)
mGoogleApiClient.connect();
}
@凌驾
受保护的void onResume(){
super.onResume();
mGoogleApiClient.connect();
}
@凌驾
受保护的void onStop(){
if(mGoogleApiClient!=null&&mGoogleApiClient.isConnected(){
mGoogleApiClient.disconnect();
}
super.onStop();
}
@凌驾
公共无效onConnectionFailed(ConnectionResult ConnectionResult){
}
@凌驾
未连接的公共空间(捆绑包){
}
@凌驾
公共空间连接暂停(int i){
} }
构建后,当我打印土司时,它每次都会给出false,这可能是什么错误?我正在学习本教程,希望检索我当前所在地的名称。

它始终为false,因为您调用了
connect()
onStart
。声明一个方法

public void showPlaces() {
      PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
        result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
            @Override
            public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
                PlaceLikelihood placeLikelihood = likelyPlaces.get(0);

                if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName()))
                    content = "Most likely place: " + placeLikelihood.getPlace().getName() + "\n";
                if (placeLikelihood != null)
                    content += "Percent change of being there: " + (int) (placeLikelihood.getLikelihood() * 100) + "%";
                mTextView.setText(content);

                likelyPlaces.release();
            }
        });
}

问题在于mGoogleApiClient.isConnected(),它提供false,这就是它无法执行进一步工作的原因。如果您只删除If(mgoogleapclient.isConnected())部分,它将正常工作

这样做:

    public void showPlaces() {

    PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
    result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
        @Override
        public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
            StringBuffer sb=new StringBuffer();
            for (PlaceLikelihood placeLikelihood : likelyPlaces) {
                String name, per;
                name = placeLikelihood.getPlace().getName().toString()+"      ";
                per = ""+(int) (placeLikelihood.getLikelihood() * 100)+"\n";
                sb.append(name+per);
            }
            content = sb.toString();
            mTextView.setText(content);
            likelyPlaces.release();
        }
    });
}

在onResume()上执行此操作。onCreate()是早期的,这意味着什么
isConnect()
返回null?@Blackbelt in if(mGoogleApiClient.isConnected())总是错误我还需要移动mGoogleApiClient=new-googleaapiclient.Builder(this.enableautomanager(this,0,this.addApi)(Places.PLACE\u-API).addConnectionCallbacks(this).addOnConnectionFailedListener(this).build();从onCreate()到onResume(),或者在onCreate()中可以吗?太棒了!谢谢:)那是错的。如果还没有连接,
GoogleAppClient
如何返回结果?如果问题只是if,那么使用另一种方法的目的是什么?我已经尝试过了,它工作得很好,我知道原因,但它正在工作,您的ans也在工作。
    public void showPlaces() {

    PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null);
    result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
        @Override
        public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
            StringBuffer sb=new StringBuffer();
            for (PlaceLikelihood placeLikelihood : likelyPlaces) {
                String name, per;
                name = placeLikelihood.getPlace().getName().toString()+"      ";
                per = ""+(int) (placeLikelihood.getLikelihood() * 100)+"\n";
                sb.append(name+per);
            }
            content = sb.toString();
            mTextView.setText(content);
            likelyPlaces.release();
        }
    });
}
mGoogleApiClient = new GoogleApiClient
            .Builder(this)
            .enableAutoManage(this, 0, this)
            .addApi(Places.PLACE_DETECTION_API)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

showPlaces();