奇怪的错误 - 在AlertDialog之后加载并返回mapFragment

时间:2014-12-01 20:05:09

标签: android android-alertdialog android-maps-v2

我这里有一个非常奇怪的问题。无法弄清楚发生了什么。在我的应用程序中,我发生了以下情况:

  1. MapFragment已加载到我的活动的FrameLayout上。
  2. 用户点击标记的InfoWindow
  3. 警告对话框弹出,询问他是否确定已经过了
  4. 如果确定,我在同一个FrameLayout上加载另一个片段
  5. 当用户点击后退按钮再次加载地图时,地图就会出现问题。我的意思是,导航真的很慢而且很小。
  6. 奇怪的是,如果我没有弹出AlertDialog它可以正常工作。

    代码是:

    public class MyMapFragment extends Fragment implements LocationListener, GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener {
        private GoogleMap map;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
            //...
    
            map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
                @Override
                public void onInfoWindowClick(final Marker marker) {
    
                    AlertDialog alert = new AlertDialog.Builder(getActivity())
                                            .setTitle("Confirmação")
                                            .setMessage("Essa ação gastará 1 de energia")
                                            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    
                                                @Override
                                                public void onClick(DialogInterface dialog, int which) {
                                                    UFVQuestUtils.user.setEnergyLeft(UFVQuestUtils.user.getEnergyLeft() - 1);
                                                    parent.navigationDrawerAdapter.notifyDataSetChanged();
                                                    Quest q = UFVQuestUtils.questMarkerMap.get(marker);
    
                                                    if (q != null) {
                                                        final Fragment fragment;
                                                        if (q instanceof GoToAndAnswerQuest) {
                                                            fragment = new GoToAndAnswerFragment();
                                                        } else {
                                                            fragment = new SeekAndAnswerFragment();
                                                        }
    
                                                        if (fragment != null) {
                                                            UFVQuestUtils.currentQuest = q;
                                                            UFVQuestUtils.currentMarker = marker;
                                                            FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
    
                                                            transaction.replace(R.id.content_frame, fragment);
                                                            transaction.addToBackStack(null);
                                                            transaction.commit();
    
                                                        }
                                                    }
                                                }
                                            })
                                            .setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
    
                                                @Override
                                                public void onClick(DialogInterface dialog, int which) {
                                                    // Do nothing
                                                }
                                            }).create();
                    alert.show();
                }
            });
    

    感谢您的帮助。

0 个答案:

没有答案