【发布时间】:2018-05-28 11:50:14
【问题描述】:
我在我的application 中使用GPS 获取latitude 和longitude。我为此使用GoogleApiClient。我有一个名为“HomeActivity”的Activity,我在其上创建了一个标题和一个FrameLayout,以在该Activity 上显示其他fragments。我的标题上也有设置按钮。
现在的问题:
在我的一个名为“A fragment”的片段中,我正在获取latitude 和longitude 并将其用于某些工作。在设置button 时,我会打开一个dialog,它会立即获取当前的纬度和经度。但问题是,当我在“A 片段”上并打开 Dialog 时,有时我的应用程序崩溃并抛出错误,即“已经在管理 id 为 0 的 GoogleApiClient”。并且错误直接指向我的Dialog 代码。我已经完成了几个小时的工作和研究,但无法解决问题。请帮忙。
从 HomeActivity 标题上的设置按钮打开对话框的代码
// onClickListener on Setting button
case R.id.setting:
DialogSettings dc = new DialogSettings(HomeActivity.this, HomeActivity.this,"HomeActivity",HomeActivity.this);
dc.show();
获取纬度和经度的对话框代码
public class DialogSettings extends Dialog implements View.OnClickListener, GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
Context context;
private GoogleApiClient googleApiClient;
AppCompatActivity appCompatActivity;
public DialogSettings(Activity a, Context context, String currentActivity, AppCompatActivity appCompatActivity) {
super(a);
this.context = context;
this.currentActivity = currentActivity;
this.appCompatActivity = appCompatActivity;
}
// point out error on this code
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
setUpGClient();
}
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
googleApiClient.stopAutoManage((AppCompatActivity) context);
googleApiClient.disconnect();
}
// point out error on this code
private synchronized void setUpGClient() {
googleApiClient = new GoogleApiClient.Builder(context)
.enableAutoManage(((AppCompatActivity) context), 0, this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
googleApiClient.connect();
}
}
“片段”的代码,它还获取纬度和经度
public class UwLocalePolitieFragment extends Fragment implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
@Override
public void onPause() {
super.onPause();
googleApiClient.stopAutoManage(getActivity());
googleApiClient.disconnect();
}
private synchronized void setUpGClient() {
googleApiClient = new GoogleApiClient.Builder(getActivity())
.enableAutoManage(getActivity(), 0, this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
googleApiClient.connect();
}
@Override
public void onStart() {
super.onStart();
setUpGClient();
}
}
【问题讨论】:
标签: android google-maps google-api google-geolocation