我正在处理一个应用程序,其中我的活动中有多个碎片,但问题是有时在“ 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 做错了吗?
答案 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
}
答案 2 :(得分:0)
检查堆栈计数并删除所有活动的片段,然后调用父类的onBackPressed()方法。
mod_offline
答案 3 :(得分:0)
它崩溃了,因为当您按下按钮时,您的活动没有附加到视图,如果您想要显示Toast消息,那么您需要该活动的实例。 试试这个,检查片段是否附加到活动
Activity activity = getActivity();
if(activity! = null && isAdded){
Toast.makeText(getActivity, "Show message", Toast.LENGTH_SHORT).show();
}