MvRx: Google maps и BottomNavigationView - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь настроить карты Google на вкладке BottomNavigationView, используя MvRx .

У меня есть вопросы:

  1. Какая самая лучшая практика длянастройка BottomNavigationView в MvRx?
  2. Используя приведенный ниже код, мне удалось загрузить карту один раз, но во второй раз, когда я открываю вкладку, я получаю следующую ошибку.Поэтому мне интересно, каков рекомендуемый способ настройки карт Google во фрагменте BottomNavigationView с использованием MvRx?

Причина: java.lang.IllegalArgumentException: двоичный XML-файл, строка 7: идентификатор дубликата 0x7f080089, тэг null или родительский идентификатор 0xffffffff с другим фрагментом для com.google.android.gms.maps.SupportMapFragment

Мой фрагмент выглядит следующим образом:

class MapFragment : BaseFragment() {

    private val mViewModel: ChatViewModel by fragmentViewModel()

    override fun epoxyController() = simpleController(mViewModel) {state ->
        mapView{
            id("map")
        }
    }
}

И просмотр:

@ModelView(autoLayout = ModelView.Size.MATCH_WIDTH_MATCH_HEIGHT)
class MapView @JvmOverloads constructor(
        context: Context,
        attrs: AttributeSet? = null,
        defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {

    init {
        inflate(context, R.layout.fragment_map, this)
    }

}

Фрагмент карты (вылетает при втором надувании)

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

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

</FrameLayout>

main_activity

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/coordinator_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


        <fragment
            android:id="@+id/my_nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            app:navGraph="@navigation/nav_graph" />

        <android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_navigation"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:background="@android:color/white"
            app:itemTextColor="@color/bottom_navigation_text"
            app:layout_behavior="android.support.design.behavior.HideBottomViewOnScrollBehavior"
            app:menu="@menu/bottom_navigation_main" />


</android.support.design.widget.CoordinatorLayout>

MainActivity

class MainActivity: BaseMvRxActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        setupNavigation()
    }

    private fun setupNavigation() {
        val navController = findNavController(R.id.my_nav_host_fragment)
        bottom_navigation.setupWithNavController(navController)
    }

    override fun onSupportNavigateUp() =
            findNavController(R.id.my_nav_host_fragment).navigateUp()

}
...