googlemap в AlertDialog

Диалог вызываю так

sarek_point_view_map.setOnClickListener(vsp -> {
                LayoutInflater sarekpoint_dialog_layout = LayoutInflater.from(this);
                sarek_point_map_view=null;
                sarek_point_map_view = sarekpoint_dialog_layout.inflate(R.layout.sarek_point_map, null);
                android.app.AlertDialog.Builder sarekpoint_dialog_mDialogBuilder = new android.app.AlertDialog.Builder(this);
                sarekpoint_dialog_mDialogBuilder.setView(sarek_point_map_view);
                sarekpoint_dialog_mDialogBuilder
                        .setCancelable(false)
                        .setPositiveButton(R.string.lang_save,
                                (sarekpoint_dialog_dialog, sarekpoint_dialog_id) -> {
                                    if (lat_sarek_point_tmp != null) {
                                        lat_sarek_point = lat_sarek_point_tmp;
                                        lon_sarek_point = lon_sarek_point_tmp;
                                    }
                                    sarekpoint_dialog_dialog.dismiss();
                                })
                        .setNegativeButton(R.string.lang_cancel, (sarekpoint_dialog_dialog, sarekpoint_dialog_id) -> sarekpoint_dialog_dialog.dismiss());
                android.app.AlertDialog sarekpoint_dialog_alertDialog = sarekpoint_dialog_mDialogBuilder.create();
                sarekpoint_dialog_alertDialog.show();
                FragmentManager myFragmentManager = getSupportFragmentManager();
                SupportMapFragment  mapFragment_sarek_point = (SupportMapFragment) myFragmentManager.findFragmentById(R.id.sarek_point_map);
                assert mapFragment_sarek_point != null;
                mapFragment_sarek_point.getMapAsync(onMapReadyCallback_sarek_point());
            });

....

public OnMapReadyCallback onMapReadyCallback_sarek_point() {
        return googleMapReady -> {
            googleMap_sarek_point = googleMapReady;
            }
}

На форме два constraintlayout (буду называть их экранами): на одном некая форма, на втором кнопки (с вызовом по одной из кнопок диалога). Есть главное меню(2 кнопки) по которому я переключаю первый или второй constraintlayout. Кейс такой:

  • я на первом экране (экран1.setVisibility(View.VISIBLE)/экран2.setVisibility(View.GONE))
  • перехожу на второй (экраны меняю через экран1.setVisibility(View.GONE)/экран2.setVisibility(View.VISIBLE))
  • на втором экране нажимаю кнопку, показывается диалоговое окно с картой (на весь экран) и кнопками, полет нормальный
  • закрываю диалог (кнопки setPositiveButton / setNegativeButton)
  • перехожу на первый экран: экран1.setVisibility(View.VISIBLE)/экран2.setVisibility(View.GONE)
  • перехожу на второй экран: экран1.setVisibility(View.GONE)/экран2.setVisibility(View.VISIBLE)
  • на втором экране нажимаю кнопку, показывается диалоговое окно и карты нет (и логотип google не отображается) и диалоговое окно только с кнопками

вопрос: как после VISIBLE/GONE починить диалоговое окно или подскажите куда копать?


Ответы (1 шт):

Автор решения: Vlad Ri

решено (оказалось все просто): создание диалога за пределами listener'a

→ Ссылка