【发布时间】:2023-03-10 07:00:01
【问题描述】:
在我的应用程序中,我使用DrawerLayout。当我切换到包含SupportMapFragment 的MapFragment 并返回它时,谷歌地图再次被初始化。有没有办法阻止谷歌地图这样做?我正在使用科特林。我已经阅读了关于使用 WeakReference 到 MapView 的想法,但我不明白它在这种情况下有何帮助。
class MapFragment : Fragment(), OnMapReadyCallback {
lateinit var mMap: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_map, container, false)
val mapFragment = childFragmentManager.findFragmentById((R.id.map_new)) as SupportMapFragment
mapFragment.getMapAsync(this)
return view
}
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
}
val navigationView: NavigationView = findViewById(R.id.nav_view)
navigationView.setNavigationItemSelectedListener {
if(it.itemId == R.id.nav_logout){
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
true
}
else {
var fragment = when (it.itemId) {
R.id.nav_map -> MapFragment()
R.id.nav_forecast -> ForecastFragment()
R.id.nav_app_info -> AboutFragment()
else -> MapFragment()
}
fragmentManager
.beginTransaction()
.replace(R.id.main_activity_frame, fragment)
.commit()
it.isChecked = true
drawerLayout.closeDrawers()
true
}
}
【问题讨论】:
标签: android google-maps kotlin