【问题标题】:java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0java.lang.IllegalStateException:已经在管理 ID 为 0 的 GoogleApiClient
【发布时间】:2018-05-28 11:50:14
【问题描述】:

我在我的application 中使用GPS 获取latitudelongitude。我为此使用GoogleApiClient。我有一个名为“HomeActivity”的Activity,我在其上创建了一个标题和一个FrameLayout,以在该Activity 上显示其他fragments。我的标题上也有设置按钮。

现在的问题:

在我的一个名为“A fragment”的片段中,我正在获取latitudelongitude 并将其用于某些工作。在设置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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 2011-11-11
      • 2023-03-08
      • 2013-07-21
      相关资源
      最近更新 更多