我正在处理一个应用程序,其中我的Activity内有多个Fragments,但问题是有时在“BackPress”上,我的应用程序崩溃,并显示错误,即“java.lang.IllegalStateException:片段未附加到Android中的Activity”。我的logcat将我重定向到吐司,即
代码
catch (Exception e) {
Toast.makeText(getActivity(), R.string.some_error_occured, Toast.LENGTH_LONG).show();
e.printStackTrace();
}
我做错什么了吐司?
5条答案
按热度按时间tvokkenx1#
如果你在你的片段中有一个视图页,那么你需要添加你的视图页适配器。
bhmjp9jg2#
检查堆栈计数并移除所有活动片段,然后调用父类的onBackPressed()方法。
jgwigjjp3#
嘿,检查你是否连接到Activity,然后进行上下文相关的调用,比如getString,这是你在吐司中所做的。所以把你的代码移到里面
isAdded():如果片段当前已添加到其Activity,则返回true。
文档
xkftehaa4#
它崩溃是因为当你按后退按钮时,你的活动没有附加到视图中,如果你想显示吐司消息,那么你需要该活动的示例。尝试一下,检查片段是否附加到活动中
gzjq41n45#
答案很简单。你的片段没有得到正确的上下文引用,你应该这样做,它永远不会强制停止。
引用集成了片段的Activity。例如,片段位于MainActivity下,因此应按如下方式编写代码
主要活动;
@Override public void onCreate(捆绑包){超级onCreate(捆绑包);
}
//我保证,您的应用程序将顺利工作,没有任何单一的错误。