加载程序完成后如何显示DialogFragment?当我在onLoadFinished()加载器回调中执行此操作时,我得到一个异常,我无法在那里执行该操作。我想这是因为我试图在UI线程以外的地方显示对话框(因为ListFragment加载器是异步运行的)。在加载器完成时触发的封闭ListFragment中是否还有其他回调或观察者?
基本上,一旦填充了列表视图,我想检查列表。如果列表为空,我想显示一个信息对话框,让用户知道如何为列表创建项目。
在onLoadFinished()中调用DialogFragment.show()时显示的异常是:
09-18 10:51:08.974 25310-25310 / [pkg] E / AndroidRuntime:致命异常:主要 java.lang.IllegalStateException:无法在onLoadFinished
中执行此操作答案 0 :(得分:0)
您无法在onLoadFinished和其他回调中添加片段。它与state loss有关。你可以创建与DialogFragment相同的包,扩展它和ovveride show方法。但你最好不要这样做。
答案 1 :(得分:0)
来自helpful post:
...没有任何说明onLoadFinished将在UI线程上调用,所以理论上你应该使用像Reto的书中建议的Handler ...
考虑到这一点,以下内容应该有效:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// Show your dialog here.
}
});
}
假设您的侦听器在Activity中实现。否则,请使用Handler。