0

我有一个Fragment(来自支持库),其中包括一个MapView(来自 Google Maps API v2)。单击属于标记的信息窗口时,我想从Fragment包含切换MapView到另一个Fragment包含有关标记所代表地点的详细信息的窗口。为了切换,我使用以下代码:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.detach(oldFragment)
  .add(R.id.fragment_container, newFragment, tag)
  .addToBackStack(null)
  .commit();
getSupportFragmentManager().executePendingTransactions();

问题是,单击信息窗口后,应用程序挂起。我能够通过调试器逐步完成,却发现最终原因是对Object.wait()由 触发的 Google Maps API v2 库内部的调用MapView.onPause(),我必须按照MapView文档调用它。

我也试图注释掉这个onPause()调用,但是另一个调用Object.wait()是由 Google Maps API v2 库中的另一个方法触发的,并且应用程序仍然挂起。我也尝试用一个整体MapFragment代替MapView,但没有任何改变。

我找不到任何有同样问题的人,所以我几乎迷路了。知道发生了什么,我做错了什么,以及我能做些什么来解决这个问题?

4

1 回答 1

0

经过进一步调查,罪魁祸首似乎是对 的调用executePendingTransactions(),或者它与MapView/交互的方式MapFragment。删除该调用后,应用程序将停止挂起。

于 2013-05-20T11:03:58.003 回答