нужна помощь в развертывании рубина на рельсах к героку

Ответ Мэтт предлагает работы, но это заставляет карту воссоздаваться и перерисовываться, что не всегда желательно. После многих проб и ошибок я нашел решение, которое работает для меня:

private static View view;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    if (view != null) {
        ViewGroup parent = (ViewGroup) view.getParent();
        if (parent != null)
            parent.removeView(view);
    }
    try {
        view = inflater.inflate(R.layout.map, container, false);
    } catch (InflateException e) {
        /* map is already there, just return view as it is */
    }
    return view;
}

Для хорошей меры, вот «map.xml» (R.layout.map) с R.id.mapFragment ( android: id = "@ + id / mapFragment"):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>

Надеюсь, это поможет, но я не могу гарантировать, что он не имеет никаких побочных эффектов.

Изменить: Были некоторые неблагоприятные эффекты, например, при выходе из приложения и повторном запуске. Поскольку приложение не обязательно полностью отключается (но просто укладывается в фоновом режиме), предыдущий код, который я отправил, не смог перезапустить приложение. Я обновил код до чего-то, что работает для меня, идя в & amp; из карты и выхода и перезапуска приложения, я не слишком доволен битком try-catch, но, похоже, он работает достаточно хорошо. При просмотре трассировки стека мне пришло в голову, что я могу просто проверить, есть ли фрагмент карты в FragmentManager, нет необходимости в блоке try-catch, обновлен код.

Дополнительные изменения: оказывается, что вам нужно что try-catch в конце концов. Просто проверка фрагмента карты оказалась не очень хорошей. Blergh.

1
задан Siong Thye Goh 22 February 2019 в 05:51
поделиться

1 ответ

добавьте в config / initializers / assets.rb

Rails.application.config.assets.precompile += %w( *.js *.es6 *.css )
Rails.application.config.assets.precompile += %w(*.png *.jpg *.jpeg) 

, если вы использовали папку vendor или lib, добавьте:

Rails.application.config.assets.paths << Rails.root.join('lib')
Rails.application.config.assets.paths << Rails.root.join('vendor')
0
ответ дан Infinity Dev 22 February 2019 в 05:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: