android - 我的应用程序在运行时工作,但在“应用更改并重新启动活动”时崩溃
问题描述
该应用程序应该是一个简单的谷歌地图应用程序,我在地图中有 2 个标记位置并放大其中一个。当我运行程序时,它工作正常。但是,如果我对某些代码进行更改,并尝试“将更改应用于应用程序并重新启动活动”,它就会崩溃。有时我可以编辑我的 xml 文件和主文件,保存,然后再次运行以“绕过”错误,但我想知道为什么应用程序不断崩溃 :) 为大量代码道歉,但我不知道在哪里问题是。
这是代码:
MainActivity.kt:
package com.example.gpsworkingnew
import android.os.Bundle
import androidx.fragment.app.FragmentActivity
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.OnMapReadyCallback
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.MarkerOptions
class MainActivity : FragmentActivity(), OnMapReadyCallback{
private lateinit var mMap: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var mapFragment = supportFragmentManager.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
// Add a marker in Sydney and move the camera
val gjovik = LatLng(60.784250, 10.686500)
val gjovik2 = LatLng(60.784251, 10.687510)
mMap.addMarker(MarkerOptions().position(gjovik).title("Marker in gjovik"))
mMap.addMarker(MarkerOptions().position(gjovik2).title("Marker in gjovik2"))
mMap.moveCamera(CameraUpdateFactory.newLatLng(gjovik))
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(gjovik, 40f))
}
}
活动主.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"
tools:context=".MainActivity"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
错误信息:
--------- beginning of crash
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.gpsworkingnew, PID: 7080
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gpsworkingnew/com.example.gpsworkingnew.MainActivity}: android.view.InflateException: Binary XML file line #15 in com.example.gpsworkingnew:layout/activity_main: Binary XML file line #15 in com.example.gpsworkingnew:layout/activity_main: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5456)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5362)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:58)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5415)
at android.app.ActivityThread.access$3300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
Caused by: android.view.InflateException: Binary XML file line #15 in com.example.gpsworkingnew:layout/activity_main: Binary XML file line #15 in com.example.gpsworkingnew:layout/activity_main: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #15 in com.example.gpsworkingnew:layout/activity_main: Error inflating class fragment
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f060016 type #0x3 is not valid
at android.content.res.Resources.getDimensionPixelSize(Resources.java:827)
at com.google.maps.api.android.lib6.impl.at.h(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):7)
at com.google.maps.api.android.lib6.impl.fc.<init>(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):6)
at com.google.maps.api.android.lib6.impl.bi.a(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):15)
at com.google.maps.api.android.lib6.impl.co.a(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):4)
at com.google.android.gms.maps.internal.o.a(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):21)
at cy.onTransact(:com.google.android.gms.dynamite_mapsdynamite@201817052@20.18.17 (040700-0):4)
at android.os.Binder.transact(Binder.java:1043)
at com.google.android.gms.internal.maps.zza.zzH(com.google.android.gms:play-services-maps@@17.0.1:2)
at com.google.android.gms.maps.internal.zzk.onCreateView(com.google.android.gms:play-services-maps@@17.0.1:5)
at com.google.android.gms.maps.zzau.onCreateView(com.google.android.gms:play-services-maps@@17.0.1:7)
at com.google.android.gms.dynamic.zad.zaa(Unknown Source:4)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.zaa(Unknown Source:9)
at com.google.android.gms.dynamic.DeferredLifecycleHelper.onCreateView(Unknown Source:25)
at com.google.android.gms.maps.SupportMapFragment.onCreateView(com.google.android.gms:play-services-maps@@17.0.1:1)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
at androidx.fragment.app.FragmentManagerImpl.ensureInflatedFragmentView(FragmentManager.java:1689)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1431)
E/AndroidRuntime: at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1684)
at androidx.fragment.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3774)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:120)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:405)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:387)
at android.view.LayoutInflater.tryCreateView(LayoutInflater.java:1067)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:995)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:959)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:1121)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1082)
at android.view.LayoutInflater.inflate(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:532)
at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:455)
at android.app.Activity.setContentView(Activity.java:3468)
at com.example.gpsworkingnew.MainActivity.onCreate(MainActivity.kt:18)
at android.app.Activity.performCreate(Activity.java:8000)
at android.app.Activity.performCreate(Activity.java:7984)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5456)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5362)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ClientTransactionHandler.executeTransaction(ClientTransactionHandler.java:58)
at android.app.ActivityThread.handleRelaunchActivityLocally(ActivityThread.java:5415)
at android.app.ActivityThread.access$3300(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2076)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
I/Process: Sending signal. PID: 7080 SIG: 9
如果我忘了添加一些东西,请告诉我:)
解决方案
您可以在此处阅读文档 https://developer.android.com/studio/run#apply-changes
据说
通常,当您修改了方法主体中的代码但没有修改任何资源时,您可以使用此选项
因此,如果您添加新 ID 或新资源(例如 View 或 Viewgroup),它将无法正常工作
Run
如果无法使用任一 Apply Changes 选项应用,您可以选择选项
推荐阅读
- firebase - 谷歌云 API 已过期
- php - 该页面因活动而过期。PHP 卷曲
- jakarta-ee - 防止断开后回溯
- tableau-api - 释放操作过滤器时应用以前的过滤器
- javascript - 我想每次将不同的变量传递给循环中动态创建的按钮
- ngx-bootstrap - 如何使用 ngx-bootstrap 使标签居中
- angular - 从文本框中的自动完成建议中检索选定的选项
- angular - 在 Angular 中,如果担心新数据到来时缓存无效,那么在处理缓存时,shareReplay 和拦截器之间哪种技术更好?
- asynchronous - 在 Dart 中将方法引用作为异步调用传递
- c# - Pdfsharp失去了文本块的不透明度