【问题标题】:Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()尝试调用虚拟方法'java.lang.String android.content.Context.getPackageName()
【发布时间】:2017-07-29 18:05:31
【问题描述】:

我正在使用这样的代码在我的片段之一中使用 PreferenceManager。

String userId = PreferenceManager.getDefaultSharedPreferences(getContext()).getString("userId", "");

它会导致上面提到的一些时间错误。我在stackflow中搜索了很多问题,但无法解决。我完整的错误日志如下所示

FATAL EXCEPTION: main
Process: com.example.shayari, PID: 29366
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.support.v7.preference.PreferenceManager.getDefaultSharedPreferencesName(PreferenceManager.java:308)
at android.support.v7.preference.PreferenceManager.getDefaultSharedPreferences(PreferenceManager.java:303)
at com.example.shayari.material.QuotesListFragment.updateQuotesListServer(QuotesListFragment.java:252)
at com.example.shayari.material.QuotesListFragment.access$900(QuotesListFragment.java:45)
at com.example.shayari.material.QuotesListFragment$4.onResponse(QuotesListFragment.java:202)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6290)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

任何人都遇到过类似的问题,如果找到任何解决方案,请告诉我。非常感谢

【问题讨论】:

    标签: java android


    【解决方案1】:

    getContext() 正在返回 null。当片段不再附加到活动时,它将执行此操作。

    您似乎正在从片段进行 Retrofit 调用,并尝试更新 SharedPreferences 作为处理响应的一部分。但是,显然,您没有检查片段是否仍附加到活动。片段分离的原因有很多,包括导航(例如,用户在网络 I/O 完成之前按 BACK 退出活动)或配置更改(例如,用户旋转屏幕,导致 Android 切换到新活动和新片段,但 Retrofit 仍想与旧片段对话)。

    【讨论】:

      猜你喜欢
      • 2018-05-12
      • 2018-09-17
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 2015-12-10
      • 2021-07-01
      • 2015-07-16
      相关资源
      最近更新 更多