【问题标题】:Recursive entry to executePendingTransactions on using GoogleApiClient in Fragment在 Fragment 中使用 GoogleApiClient 执行 PendingTransactions 的递归条目
【发布时间】:2015-05-05 14:21:59
【问题描述】:

我正在尝试在我的应用中使用 Place Autocomplete API。我有一个主要的Activity。我有一个Fragment,它是MainActivity 的一部分。在OnViewCreated() 这个Fragment.

 private void rebuildGoogleApiClient() {
    // When we build the GoogleApiClient we specify where connected and connection failed
    // callbacks should be returned and which Google APIs our app uses.
    mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
            .enableAutoManage(activity, 0 /* clientId */, this)
            .addConnectionCallbacks(this)
            .addApi(Places.GEO_DATA_API)
            .build();
}

堆栈跟踪:

Caused by: java.lang.IllegalStateException: Recursive entry to executePendingTransactions
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1471)
        at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:488)
        at com.google.android.gms.common.api.zzl.zza(Unknown Source)
        at com.google.android.gms.common.api.GoogleApiClient$Builder.zzkL(Unknown Source)
        at com.google.android.gms.common.api.GoogleApiClient$Builder.build(Unknown Source)
        at com.app.projectpapri.Fragments.LocationScreen.rebuildGoogleApiClient(LocationScreen.java:69)
        at com.app.projectpapri.Fragments.LocationScreen.onViewCreated(LocationScreen.java:93)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:971)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
        at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548)
        at com.app.projectpapri.core.BaseActivity.onStart(BaseActivity.java:38)
        at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1243)

我们将不胜感激。

【问题讨论】:

    标签: android android-fragments google-places-api google-api-client


    【解决方案1】:

    不要在onViewCreated() 中调用rebuildGoogleApiClient(),而是尝试在片段的onActivityCreated() 方法中调用它。

    有关片段生命周期的更多信息,请参阅http://developer.android.com/reference/android/app/Fragment.html#Lifecycle

    如果这仍然不起作用,您可以删除 enableAutoManage(...) 并在 GoogleApiClient 实例上显式调用 connect()disconnect()

    详情请见https://developers.google.com/places/android/start#connect-client

    这有帮助吗?

    【讨论】:

    • 删除enableAutoManage(...) 并使用connect() 对我有用。虽然不知道为什么。暂时接受您的回答。
    【解决方案2】:

    为我工作:

    public class TestActivity extends Fragment {
    
    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mGoogleApiClient = new GoogleApiClient.Builder(getActivity())
                .addApi(Places.GEO_DATA_API)
                .build();
    }
    
    @Override
    public void onStart() {
        super.onStart();
        mGoogleApiClient.connect();
    }
    
    @Override
    public void onStop() {
        super.onStop();
        mGoogleApiClient.disconnect();
    }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2019-12-20
      • 2023-01-20
      相关资源
      最近更新 更多