致命异常:android map中的主java.lang.RuntimeException,

致命异常:android map中的主java.lang.RuntimeException,,java,android,eclipse,Java,Android,Eclipse,我目前正在按照本教程操作android地图,我不断收到错误。有4个警告,我试图修复它,但当我再次运行时,仍然显示错误消息致命异常 以下是警告信息: 1.从LokasiKampus类型连接的消息服务从未在本地使用 2.不使用局部变量kampus的值 3.不使用局部变量laboratorium的值 4.未使用局部变量myCurrentLocation的值 这是我的Java代码 package ninth.example.dteinformationcenter; import android.app

我目前正在按照本教程操作android地图,我不断收到错误。有4个警告,我试图修复它,但当我再次运行时,仍然显示错误消息致命异常

以下是警告信息: 1.从LokasiKampus类型连接的消息服务从未在本地使用 2.不使用局部变量kampus的值 3.不使用局部变量laboratorium的值 4.未使用局部变量myCurrentLocation的值

这是我的Java代码

package ninth.example.dteinformationcenter;
import android.app.Activity;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.Intent;
import android.content.IntentSender;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.widget.Toast;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesClient;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.LocationClient;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;


public class LokasiKampus extends FragmentActivity implements 
GooglePlayServicesClient.ConnectionCallbacks,
GooglePlayServicesClient.OnConnectionFailedListener{
static final LatLng Kampus = new LatLng (-7.775038, 110.373253);
static final LatLng Laboratorium = new LatLng (-7.765437, 110.374496);
private static final int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;
private GoogleMap map;
private GooglePlayServicesClient myLocationClient;


public static class ErrorDialogFragment extends DialogFragment {
    private Dialog mDialog;
    public ErrorDialogFragment() {
        super();
        mDialog = null;
    }
    public void setDialog(Dialog dialog) {
        mDialog = dialog;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return mDialog;
    }
    public void show(FragmentManager supportFragmentManager, String tag) {
        // TODO Auto-generated method stub

    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch(requestCode) {
    case CONNECTION_FAILURE_RESOLUTION_REQUEST :
        switch(resultCode) {
        case Activity.RESULT_OK : break;
        }
    }
}

**private boolean servicesConnected()** {
    int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
    if (ConnectionResult.SUCCESS == resultCode) {
        Log.d("Location Updated", "Google Play Services is available");
    return true;
    } else {

        Dialog ErrorDialog = GooglePlayServicesUtil
                .getErrorDialog(resultCode, this, CONNECTION_FAILURE_RESOLUTION_REQUEST);

        if (ErrorDialog != null) {
            ErrorDialogFragment errorFragment = new ErrorDialogFragment();

            errorFragment.setDialog(ErrorDialog);
            errorFragment.show(getSupportFragmentManager(), "Location Updates");
        }
        return false;
    }
}


protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.lokasi_kampus);
    map = ((MapFragment) getFragmentManager().findFragmentById(R.id.lokasikampus)).getMap();

    if (map != null) {
        **Marker kampus = map.addMarker(new MarkerOptions().position(Kampus)
                .title("Kampus "));
        Marker laboratorium = map.addMarker(new MarkerOptions().position(Laboratorium)
                .position(Laboratorium)
                .title("Laboratorium")
                );**

        map.moveCamera(CameraUpdateFactory.newLatLngZoom(Kampus, 18));
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);
    }

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

    **Location myCurrentLocation;
    myCurrentLocation = myLocationClient.getLastLocation();**
}

@Override
public void onConnected(Bundle dataBundle) {
    Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
}

@Override
public void onDisconnected() {
    Toast.makeText(this, "Disconnected, please re-connect", Toast.LENGTH_SHORT).show();
}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    if(connectionResult.hasResolution()) {
        try {
            connectionResult.startResolutionForResult(this, CONNECTION_FAILURE_RESOLUTION_REQUEST);
        } catch(IntentSender.SendIntentException e) {
            e.printStackTrace();
        }
    } else {
        Toast.makeText(this, "Connection Failed", Toast.LENGTH_SHORT).show();
    }
}

@Override
protected void onStart() {
    super.onStart();
    myLocationClient.connect();
        }

@Override
protected void onStop() {
    myLocationClient.disconnect();
    super.onStop();
}

}
这是错误消息

FATAL EXCEPTION: main
 Process: ninth.example.dteinformationcenter, PID: 1443
java.lang.RuntimeException: Unable to start activity ComponentInfo{ninth.example.dteinformationcenter/ninth.example.dteinformationcenter.LokasiKampus}: java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
at com.google.android.gms.internal.hb.cn(Unknown Source)
at com.google.android.gms.internal.jg.b(Unknown Source)
at com.google.android.gms.internal.jg$c.cn(Unknown Source)
at com.google.android.gms.internal.jf.getLastLocation(Unknown Source)
at com.google.android.gms.internal.jg.getLastLocation(Unknown Source)
at com.google.android.gms.location.LocationClient.getLastLocation(Unknown Source)
at ninth.example.dteinformationcenter.LokasiKampus.onCreate(LokasiKampus.java:112)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)

可能重复:呼叫服务已连接;在您的oncreate中。您正在使用LocationClient,它需要连接到google服务,因此任何位置请求都需要等待连接建立,所以将此位置移动到myCurrentLocation;myCurrentLocation=myLocationClient.getLastLocation;在onConnectedBundle中,您还需要调用locationClient.connect;当你的活动开始时。另外,您可能还需要实现LocationListener。我按照您的指示操作,但仍然出现错误,PID更改为PID:938