java.lang.IllegalStateException:已经管理了ID为0的GoogleApiClient

时间:2017-12-14 11:42:00

标签: android google-maps android-studio google-api google-geolocation

我在latitude中使用longitude提取GPSapplication。我正在使用GoogleApiClient。我有一个Activity名为“ HomeActivity ”,我在其上创建了一个标题,并FrameLayoutfragments上显示其他Activity。我的标题上也有设置按钮。

现在出现问题:

在我的一个名为“ A片段”的片段中,我正在获取latitudelongitude并将其用于某些工作。在设置button时,我会打开一个dialog,它会立即获取当前的纬度和经度。但问题是当我使用“A片段”并打开Dialog时,有时我的应用程序崩溃并抛出错误,即“已经管理了{0}的id {0}”。并且错误直接指向我的GoogleApiClient代码。我做了几个小时的工作和研究,但无法解决问题。请帮忙。

从HomeActivity的标题上的设置按钮打开对话框的代码

Dialog

我们获取纬度和经度的对话框代码

    // 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();
    }


}

1 个答案:

答案 0 :(得分:0)

只需更改 enableAutoManage(getActivity() ,0, this)

启用AutoManage(getActivity(),1, this)