@denford_art

Как решить проблему с инициализацией binding в фрагменте?

Здравствуйте, пытаюсь добавить Yandex Map Kit в приложение.
У меня есть отдельный фрагмент для карты, но при попытке запустить его я получаю следующую ошибку:
kotlin.UninitializedPropertyAccessException: lateinit property binding has not been initialized
        at com.name.project.view.MapFragment.onCreate(MapFragment.kt:38)


Код MapFragment.kt
package com.name.project.view

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.name.project.databinding.FragmentMapBinding
import com.yandex.mapkit.Animation
import com.yandex.mapkit.MapKitFactory
import com.yandex.mapkit.geometry.Point
import com.yandex.mapkit.map.CameraPosition
import com.yandex.mapkit.mapview.MapView

class MapFragment : Fragment() {

    private lateinit var binding: FragmentMapBinding

    private lateinit var mapView: MapView
    private val apiKey: String = " здесь ключ"
    private val startPoint: Point = Point(60.490001, 50.833329)

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = FragmentMapBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        MapKitFactory.setApiKey(apiKey)
        MapKitFactory.initialize(activity)

        val mMapView: MapView = binding.mapViewMain

        mMapView.map
            .move(
                CameraPosition(
                    startPoint, 11.0f, 0.0f, 0.0f
                ),
                Animation(Animation.Type.SMOOTH, 0f),
                null)
    }

    override fun onStop() {
        mapView.onStop()
        MapKitFactory.getInstance().onStop()
        super.onStop()
    }

    override fun onStart() {
        super.onStart()
        MapKitFactory.getInstance().onStart()
        mapView.onStart()
    }

    companion object {
        @JvmStatic
        fun newInstance() = MapFragment()
    }
}


Подскажите, какие есть варианты решить эту проблему?
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ответы на вопрос 1
iLLuzor
@iLLuzor
Java, Kotlin, Android Developer
Нужно учить жизненный цикл фрагмента. onCreate() вызывается перед onCreateView()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы