【发布时间】:2018-06-12 13:55:23
【问题描述】:
如果有人可以分享这个看似简单的问题的解决方案,那就太好了,因为我的应用程序在尝试使用简单 Volley 的 onErrorResponse 部分中的应用程序中的以下行获取 String Resource 时崩溃请求:
mTextView.setText(sActivity.getString(R.string.connection_error,
customMessageParameter));
这个问题似乎只发生在某些用户身上(尽管我自己尝试复制崩溃),这是通过Fabric 报告的,即:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual
method 'java.lang.String android.content.Context.getString(int)' on a null
object reference at
com.appname.MyFragment$13.onErrorResponse(MyFragment.java:651)
我确保 Activity sActivity 变量使用以下函数进行初始化,该函数在 onAttach 以确保它可用:
private void setActivity(Activity activity, Context context) {
if (activity != null) {
sActivity = activity;
} else if (getActivity() != null) {
sActivity = getActivity();
} else if (context != null) {
sActivity = (Activity) context;
}
}
我了解如何预先检查 getString() 调用不等于 null 以及如何确保应用不会崩溃,但我需要从 String 获取动态值运行时的资源会有所不同。
根据我收集到的信息,活动实例可能会因使用可能导致此问题的异步网络调用而有所不同。我还考虑过单独使用 getString() 以及 getResources().getString(),但我不确定这是否会阻止问题的出现.
【问题讨论】:
标签: java android android-asynctask android-volley