java - 当我在应用程序已经运行时进行更改后从 Android Studio 运行它时,我的应用程序崩溃了

标签 java android nullpointerexception buzztouch

我正在 Android Studio 中开发一个应用程序,由于某种原因,该应用程序不断抛出错误“不幸的是,MyApp 已停止”。仅当我运行应用程序,在运行时对代码进行更改,然后尝试再次运行时,才会发生这种情况。如果我停止“运行”任务并再次启动它,则不会收到此错误。

这是日志:

06-14 15:54:06.213 25752-25752/com.myapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myapp, PID: 25752
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.activity_host}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myapp.MB_item.getItemId()' on a null object reference
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077)
  at android.app.ActivityThread.-wrap15(ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.myapp.MB_item.getItemId()' on a null object reference
  at com.myapp.BT_screen_menuButtons$override.onCreateView(MB_screen_menuButtons.java:119)
  at com.myapp.BT_screen_menuButtons$override.access$dispatch(MB_screen_menuButtons.java)
  at com.myapp.BT_screen_menuButtons.onCreateView(MB_screen_menuButtons.java:0)
  at android.app.Fragment.performCreateView(Fragment.java:2220)
  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1130)
  at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1953)
  at android.app.FragmentController.dispatchActivityCreated(FragmentController.java:152)
  at android.app.Activity.performCreateCommon(Activity.java:6232)
  at android.app.Activity.performCreate(Activity.java:6239)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4077) 
  at android.app.ActivityThread.-wrap15(ActivityThread.java) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1350) 
  at android.os.Handler.dispatchMessage(Handler.java:102) 
  at android.os.Looper.loop(Looper.java:148) 
  at android.app.ActivityThread.main(ActivityThread.java:5417) 
  at java.lang.reflect.Method.invoke(Native Method) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

为什么代码的行为在后续启动时有所不同,而在我最初运行应用程序时则不然?

附加代码:

这是抛出错误的行(MB_screen_menuButtons.java 的 119)。 screenData.getItemId() 显然是传递 null 值的地方,但我不明白为什么它只能在即时运行更新期间为 null。

debugger.showIt(fragmentName + ":onCreateView JSON itemId: \"" + screenData.getItemId() + "\" itemType: \"" + screenData.getItemType() + "\" itemNickname: \"" + screenData.getItemNickname() + "\"");

最佳答案

这似乎是 Instant Run 的问题与代码中的某些内容不兼容 - 可能是生成代码的库。

您可以禁用即时运行,它应该可以解决此问题:

Preferences > Build, Execution, Deployment > Instant Run > Uncheck "Enable Instant Run"

如果您想保留即时运行,只需取消选中“代码更改时重新启动 Activity ”

Preferences > Build, Execution, Deployment > Instant Run > Uncheck "Restart Activity on Code Changes"

关于java - 当我在应用程序已经运行时进行更改后从 Android Studio 运行它时,我的应用程序崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37865750/

相关文章:

Java Split 丢弃空数组元素

java - PDFBox如何提取超链接信息

android - 触摸事件 : when finger is removed from the item

java - 如果使用 try{}catch{} 捕获错误,代码是否会继续执行

java - 为什么Java中的常量是这样的?

java - 如何让第3方应用程序使用logback.xml?

android - 对android minSDK感到困惑

java - 将多个变量存储到一个变量中 - Java

java - 为什么会抛出空指针异常?

java - 访问已初始化对象的内部对象属性时出现 NullPointerException