Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定要更新的片段_Java_Android_Android Fragments - Fatal编程技术网

Java 确定要更新的片段

Java 确定要更新的片段,java,android,android-fragments,Java,Android,Android Fragments,我正在更新当前显示的视图,并隐藏/显示两个片段 FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); if (mTaxLocationListViewFrag.isVisible()) { if (mGoogleMapFrag == null) { mGoogleMapFrag = new GoogleMapFragme

我正在更新当前显示的视图,并隐藏/显示两个片段

FragmentTransaction fragmentTransaction =  getSupportFragmentManager().beginTransaction();

    if (mTaxLocationListViewFrag.isVisible()) {
        if (mGoogleMapFrag == null) {
            mGoogleMapFrag = new GoogleMapFragment();
            fragmentTransaction.add(R.id.fragment_container, mGoogleMapFrag);
        }
        fragmentTransaction.hide(mListViewFrag);
        fragmentTransaction.show(mGoogleMapFrag).commit();

    } else {fragmentTransaction.hide(mGoogleMapFrag).show(mListViewFrag).commit();
    }

    updateDisplay();
updateDisplay方法-

if (mListViewFrag != null && mListViewFrag.isVisible()) {
            Log.d(TAG, "Update Location ListView");
            mListViewFrag.setLocations(mLocations);
        }

        if (mGoogleMapFrag != null && mGoogleMapFrag.isVisible()) {
            Log.d(TAG, "Update Google Maps Markers");
            //Convert locations to markers to display.

        }

问题是,我猜执行
.show
时,
fragmentTransaction
是异步的。hide
和updateDisplay不能正常工作,因为它认为要隐藏的片段仍在显示。是否有更可靠的方法来检查要更新的片段?

添加
fragmentTransaction.executePendingTransactions()
。从以下文件:

它被安排在进程的主线程上异步执行。 如果要立即执行任何此类挂起的操作,请 可以调用此函数(仅从主线程)来执行此操作。注意 所有回调和其他相关行为都将在此范围内完成 打电话,所以要小心这是从哪里打来的


添加片段后,尝试添加fragmentTransaction.executePendingTransactions()。@Piyus似乎已经完成了。如果要添加为解决方案。我很乐意接受。