首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过currentLocation ActivityOne到ActivityTwo?

如何通过currentLocation ActivityOne到ActivityTwo?
EN

Stack Overflow用户
提问于 2018-01-10 17:09:56
回答 1查看 33关注 0票数 1

我试图将currentLocation从ActivityOne传递给ActivityTwo,但它传递的是null值。

在我的activityOne中,如果用户已经登录,它将重定向到另一个活动。

代码语言:javascript
复制
 private void nextActivity(){
        Intent main = new Intent(FirstActivity.this, ListActivity.class);
        main.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        main.putExtra("Lat",    latitude);  //String
        main.putExtra("Long",longitude);   //String
        startActivity(main);
}

这是获取用户位置的代码。我添加了一些注释,其中数据为null,而数据不是。

代码语言:javascript
复制
 private void checkLocationPermission(){
    try{
        if(ActivityCompat.checkSelfPermission(this, mPermission)
                != MockPackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this, new String[] {mPermission}, REQUEST_CODE_PERMISSION);
        }else {
            inBuildGoogleApiClient();
        }
    } catch(Exception e){
        e.printStackTrace();
    }
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults){
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    if(requestCode == REQUEST_CODE_PERMISSION){
        if(grantResults.length == 1 && grantResults[0] == MockPackageManager.PERMISSION_GRANTED){
            inBuildGoogleApiClient();
        }else{
            Log.d("ON REQUEST PERMISSION", "FAILED");
        }
    }
}
@Override
public void onConnected(Bundle bundle){
    locationRequest = LocationRequest.create();
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setInterval(10000);
    if(ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) !=
            PackageManager.PERMISSION_GRANTED){
        Log.d("ONCONNECTION", "FAILED");

        return;
    }else{
        Log.d("ONCONNECTION", "PASS");
    }
    LocationServices.FusedLocationApi.requestLocationUpdates(client, locationRequest, this);
    lastLocation = LocationServices.FusedLocationApi.getLastLocation(client);
    if(lastLocation != null){
        latitude = String.valueOf(lastLocation.getLatitude());
        longitude = String.valueOf(lastLocation.getLongitude());
        Log.d("Latitude", "" + latitude);
        Log.d("Longtiude", "" + longitude);
    }
    updateUI();
}
@Override
public void onConnectionSuspended(int i){

}
@Override
public void onLocationChanged(Location location){
    latitude = String.valueOf(location.getLatitude());
    longitude = String.valueOf(location.getLongitude());
    Log.d("Latitude", "" + latitude);
    Log.d("Longitude", "" + longitude);
    updateUI();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult){
    inBuildGoogleApiClient();
}
synchronized void inBuildGoogleApiClient(){
    client = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).
            addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
}
@Override
protected void onResume() {
    if(AccessToken.getCurrentAccessToken() != null){
        checkLocationPermission();
        Log.d("TEST TEST", "" + latitude);   // RETURNS NULL
        nextActivity();
    }
    if(client != null){
        client.connect();
    }
    super.onResume();
}
@Override
protected void onDestroy(){
    super.onDestroy();
    if(client != null){
        client.disconnect();
    }
}
void updateUI(){
    Log.d("LOCATION L", "" + latitude ); // SHOWS THE RIGHT LAT
    Log.d("LOCATION LON", "" + longitude); //SHOWS THE RIGHT LON
}
@Override
protected void onPause() {
    super.onPause();
}

有人知道我怎么解决这个问题吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-10 17:18:10

这里再次调用nextActivity

代码语言:javascript
复制
@Override
public void onLocationChanged(Location location){
    latitude = String.valueOf(location.getLatitude());
    longitude = String.valueOf(location.getLongitude());
    Log.d("Latitude", "" + latitude);
    Log.d("Longitude", "" + longitude);
    updateUI();
    nextActivity();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48192674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档