#android #google-maps #android-fragments #google-maps-android-api-2
#Android #google-карты #android-фрагменты #google-maps-android-api-2
Вопрос:
У меня есть действие с 3 фрагментами, которые переключаются с помощью вкладок .. у одного из этих фрагментов есть карта.. я пробовал использовать SupportMapFragment и просто com.google.android.gms.maps.MapView во фрагменте
но когда я добавляю или заменяю фрагмент, содержащий карту.. я получаю мерцание черного экрана.. чего никогда не происходит с другими фрагментами
Я посмотрел и попытался сделать фон карты прозрачным, но это не принесло мне никакой пользы
У любого органа есть решение для этого?
Комментарии:
1. как сделать прозрачный фон для карты?
2. вы должны подождать некоторое время для загрузки карты, попробуйте добавить
new Handler().postDelayed
, когда пытаетесь заменить / добавитьMap Fragment
3. @Anuj мог бы немного рассказать об этом? Как именно это сделать?
4. @NullPointerException , я упомянул в сообщении, что это не сработало 🙂
5. @elmorabea как вы решили эту проблему
Ответ №1:
На самом деле я должен опубликовать его здесь, можете ли вы попробовать использовать
new Handler().post(new Runnable()
{
public void run()
{
mSupportMapFragment = new SupportMapFragment();
mFragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
mFragmentTransaction.replace(mMapWrapperLayoutStoreMap.getId(), mSupportMapFragment);
mFragmentTransaction.addToBackStack(BK_STK_SUPPORT_MAP_FRAGMENT);
mFragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN).commit();
}
});
Также используйте setTransition
как открытый и дайте мне знать, если это работает.
Комментарии:
1. На самом деле я бы посоветовал вам добавить
SupportMapFragment
из java вместо того, чтобы добавлять его непосредственно в файл макета XML, он будет работать.2. Помогает вам выделить время и время для загрузки фрагмента по вашему желанию
3. Это помогло при добавлении фрагмента, но все та же проблема при удалении фрагмента
4. вы использовали
getSupportFragmentManager().popBackStackImmediate(BK_STK_SUPPORT_MAP_FRAGMENT, FragmentManager.POP_BACK_STACK_INCLUSIVE);
для всплывания своего фрагмента?5. к сожалению, проблема по-прежнему сохраняется, даже начало мигать снова, я изменил его на отдельное действие
Ответ №2:
После загрузки карты, т.Е. Вы узнаете onActivityCreated()
о фрагменте карты. Вы должны вызвать следующий метод
private void setMapTransparent(ViewGroup group) {
int childCount = group.getChildCount();
for (int i = 0; i < childCount; i ) {
View child = group.getChildAt(i);
if (child instanceof ViewGroup) {
setMapTransparent((ViewGroup) child);
} else {
child.setBackgroundColor(0x00000000);
}
}
}
как
setMapTransparent((ViewGroup) fragment.getView());
где ваш fragment
фрагмент карты. Надеюсь, это поможет