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似乎已经完成了。如果要添加为解决方案。我很乐意接受。