【发布时间】:2018-08-08 15:58:39
【问题描述】:
在我的片段中,我在很多地方都使用了资源字符串。 理想情况下,一切正常。
但是,我经常收到IllegalStateException 的崩溃报告,说 Fragment 未附加到活动。
我可以想象的一种可能的解决方案是使用isAdded() 方法,如果片段是否附加到活动,则返回,但是在访问字符串资源之前在所有地方使用它对我来说似乎不是正确的解决方案,因为它可能会中断流程。
另外,我可以使用以下实现,不确定它是否正确?
在片段的onAttach 上初始化mActivity,然后使用它来获取资源字符串。
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Activity) {
mActivity = (Activity) context;
}
}
而不是
getString(R.string.string_resource)
使用
mActivity.getString(R.string.string_resource)
我可以确定使用它会停止IllegalStateExceptions吗?
【问题讨论】:
-
您能发布
Activity和Fragment代码吗?或者你得到错误的函数? -
@SusmitAgrawal 整个活动和片段代码会很麻烦,我在改造请求的 onResponse 方法中遇到了这个异常。
-
@MihirPatel 请提供
IllegalStateException的堆栈跟踪以及此跟踪中列出的方法。听起来问题在于您在生命周期中过早执行某些操作(在调用onAttach之前)。 -
你能发布堆栈跟踪吗?
标签: android android-fragments android-activity android-fragmentactivity