进入屏幕时,我检查是否打开了GPS,如果没有打开,则显示启用GPS的对话框。当用户单击“是”时,onActivityResult-> GPS已打开,我尝试获取位置,但始终返回null
当我已经打开GPS并进入屏幕时,可以正确检索位置。我已经为此苦苦挣扎了几天,似乎找不到任何资源。
UserLocationUtilities.java
public class UserLocationUtilities implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener{
GoogleApiClient googleApiClient;
Activity activity;
protected static final int REQUEST_CHECK_SETTINGS = 0x1;
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
// flag for GPS status
boolean canGetLocation = false;
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Location location;
protected double latitude,longitude;
protected boolean gps_enabled,network_enabled;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The …Run Code Online (Sandbox Code Playgroud) 在我的工作项目中,高级android开发人员设计了代码结构,将每个屏幕都作为一个片段,但每个片段都有自己的活动.活动除了保持其各自的片段外别无其他.对我来说,这没有多大意义.
有一次我使用以下模式实现了包含4个屏幕的功能,当我第一次开始这个项目的工作时:活动A:片段A(屏幕1),片段B(屏幕2),片段C(屏幕3),片段D (屏幕4)工作在从ABCD导航的流程中,所以我将替换活动A中的片段
高级开发人员让我重构代码,使其如下:活动A与片段A - >活动B与片段B - > ..等
我问他为什么这种方法比我实施的方法更好.他的理由是,如果将来将应用程序移植到平板电脑上并且片段后备栈管理器出错并且不易于用于向后导航,则它更加模块化.我真的不太明白他为什么更好的解释,因为popupbackstack似乎工作得很好.对于我来说,为应用程序的特定功能提供1个活动更加清晰,并在活动中将该功能(片段)的所有相关屏幕交换进出.
我也开始在个人Android应用工作,我做之前,我想知道这确实是这样做的正确方法.如果没有正确的方法,每种方法的优缺点是什么?