java.lang.IllegalStateException:片段未附加到Android中的Activity

时间:2018-04-11 07:23:46

标签: android android-layout android-studio illegalstateexception android-toast

我正在处理一个应用程序,其中我的活动中有多个碎片,但问题是有时在“ BackPress ”我的应用程序崩溃,它显示错误,即“ java.lang.IllegalStateException:片段未附加到Android中的活动”。我的 logcat 将我重定向到 Toast ,即

代码

catch (Exception e) {
    Toast.makeText(getActivity(), R.string.some_error_occured, Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

我对 Toast 做错了吗?

4 个答案:

答案 0 :(得分:1)

如果你的片段中有一个viewpager,那么你需要添加你的viewpager适配器。

 @Override
public Parcelable saveState() {
    return null;
}

答案 1 :(得分:0)

嘿,检查你是否附加到活动,然后进行上下文相关的调用,比如你在Toast中执行的getString。所以移动你的代码

  

isAdded():如果片段当前已添加到其中,则返回true   活性。

if (isAdded()){
    //your code goes here
} else {
    //handle the case
}

docs

答案 2 :(得分:0)

检查堆栈计数并删除所有活动的片段,然后调用父类的onBackPressed()方法。

mod_offline

答案 3 :(得分:0)

它崩溃了,因为当您按下按钮时,您的活动没有附加到视图,如果您想要显示Toast消息,那么您需要该活动的实例。 试试这个,检查片段是否附加到活动

           Activity activity = getActivity();

           if(activity! = null && isAdded){
             Toast.makeText(getActivity, "Show message", Toast.LENGTH_SHORT).show();
           }