Android MapView внутри AlertDialog

Я пытаюсь реализовать MapView в AlertDialog но MapView является нулевым каждый раз. Я вызываю по нажатию кнопки метод hotelBooking, который находится внутри Activity. Что мне здесь не хватает?

public void hotelBooking(final String hotelname){
    AlertDialog alertDialog = new AlertDialog.Builder(context).create();
    alertDialog.setTitle("Hotel Info");
    alertDialog.setIcon(R.drawable.action_hotels);
    LayoutInflater layoutInflater = LayoutInflater.from(context);
    View promptView = layoutInflater.inflate(R.layout.traveler_hotel_registration, null);
    alertDialog.setView(promptView);

    MapView mMapView = (MapView) alertDialog.findViewById(R.id.mapView2);
    MapsInitializer.initialize(this);

    mMapView.onCreate(alertDialog.onSaveInstanceState());
    mMapView.onResume();


    mMapView.getMapAsync(new OnMapReadyCallback() {
        @Override
        public void onMapReady(final GoogleMap googleMap) {
            LatLng posisiabsen = new LatLng(40.626401, 22.948352); ////your lat lng
            googleMap.addMarker(new MarkerOptions().position(posisiabsen).title(hotelname));
            googleMap.moveCamera(CameraUpdateFactory.newLatLng(posisiabsen));
            googleMap.getUiSettings().setZoomControlsEnabled(true);
            googleMap.animateCamera(CameraUpdateFactory.zoomTo(15), 2000, null);
        }
    });

    final RatingBar rb = (RatingBar) promptView.findViewById(R.id.ratingBar);
    rb.setRating(3);

    final TextView hoteltitle= (TextView)promptView.findViewById(R.id.HotelInfoTitle);
    hoteltitle.setText("Hotel " + hotelname);

    alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "Favorite", new DialogInterface.OnClickListener()
    {
        public void onClick(DialogInterface dialog, int which)
        {
            Toast.makeText(getApplicationContext(), "Hotel has been saved to favorites!",
                    Toast.LENGTH_LONG).show();

        }

    });
    alertDialog.show();
}

2 ответа

Решение
 MapView mMapView = (MapView) promptView.findViewById(R.id.mapView2);

Пытаться promtView.findViewById вместо alertDialog.findViewById

Если вы хотите так сильно настроить диалог, я бы порекомендовал использовать свой собственный DialogFragment, Посмотрите здесь: https://developer.android.com/reference/android/app/DialogFragment.html

Другие вопросы по тегам