Здесь я пытаюсь показать AlertDialog, когда я нажимаю на маркер, который динамически добавляется при загрузке (вызов API, получение позиций и отображение их на карте). Это делается во фрагментах onCreateView
.
Карта загружается здесь:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentManager fm = getChildFragmentManager();
mapFragment = (SupportMapFragment) fm.findFragmentById(R.id.map_container);
if (mapFragment == null) {
mapFragment = SupportMapFragment.newInstance();
fm.beginTransaction().replace(R.id.map_container, mapFragment).commit();
}
}
Позже я переключаюсь с SupportMapFragment
на GoogleMap
:
@Override
public void onResume() {
super.onResume();
if (mMap == null && mapFragment != null) {
mapFragment.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = Tools.configBasicGoogleMap(googleMap);
mMap.setMapType(sharedPref.getMapType());
}
});
}
}
Так что, по логике вещей, моя Карта должна быть готова как mMap
. Теперь я хочу показать AlertDialog, поэтому я делаю implements GoogleMap.OnMarkerClickListener
в определении класса для фрагмента и реализую его здесь:
@Override
public boolean onMarkerClick(final Marker marker) {
Toast.makeText(getContext(), "Hello world", Toast.LENGTH_SHORT).show();
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Confirmation");
builder.setMessage("Pour confirmer le rapport, appuyez sur + 1.\nSi le rapport est faux, cliquez sur - 1.");
builder.setPositiveButton("+ 1", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id){
URL link = null;
try {
link = new URL(S.base_url + "report/increment/" + marker.getTag().toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(
link.openStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
});
AlertDialog ab = builder.create();
ab.show();
return false;
}
Но даже Тост не появляется ... Когда я нажимаю на маркер, я получаю кнопки "Направления" и "Открыть в Google Картах", и карта центрируется на маркере, но мой метод не запускается.
В заключение, логически, когда я щелкаю по одному из этих маркеров, которые я загружаю, метод onMarkerClick должен запускаться сам, но этого никогда не происходит! Есть идеи почему? Спасибо.