gpt4 book ai didi

java.lang.IllegalStateException fragment 未附加到 Activity

转载 作者:行者123 更新时间:2023-12-01 18:06:13 25 4
gpt4 key购买 nike

收到 Volley 的回复后,我必须返回到主要 fragment 。我有两个不同的 Volley 请求,根据某些条件,在本例中我将其称为“a”。奇怪的是,当 a==1 时,popBackStack 成功让我到达主 fragment 。当 a==0 时它崩溃并且我收到java.lang.IllegalStateException Fragment not Attached to Activity我尝试创建一个新的主要 fragment (transaction.commit...),但没有帮助。

if( a == 0 )
{
VolleyManager.add(jsnObj,
new RequestListener() {

@Override
public <T> void onSuccess(T object) {
mFragmentManager.popBackStack(DataManager.BACK_STACK_KEY_MAIN_FRAGMENT, 0);
}
});
}
else if( a==1 )
{
VolleyManager.update(jsnObj,
new RequestListener() {

@Override
public <T> void onSuccess(T object) {
mFragmentManager.popBackStack(DataManager.BACK_STACK_KEY_MAIN_FRAGMENT, 0);
}
});
}

错误 -

  java.lang.IllegalStateException: Fragment MainFragment{6aaaf7f} not attached to Activity
at android.app.Fragment.getResources(Fragment.java

问题似乎出在 getResources() 上,但当 a==1 时我做了同样的事情,而且完全没有问题。

最佳答案

到时候AsyncTask似乎就是这样了完成并调用 onPostExecuteMainFragment已与其 activity 分离。所以要么activity已被摧毁或fragment从未附加过。

因此,如果 fragment 附加到activity ,它无法访问资源,因为这需要 context并且 fragment 没有但 activity确实如此。

所以你应该检查是否 activitynull或在调用getResources之前不这样做.

像这样更新代码:

if(getActivity()!=null){
String streetFormat = getActivity().getResources().getString( R.string.address_name_string );
....
}

关于java.lang.IllegalStateException fragment 未附加到 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36246270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com