Android ListFragment:加载程序完成后显示对话框
加载程序完成后,如何显示DialogFragment?当我在onLoadFinished()装入器回调中执行此操作时,我得到一个异常,即我无法在那里执行该操作。我想这是因为我试图在UI线程之外的其他地方显示对话框(因为ListFragment加载程序异步运行)。在装入程序完成时触发的封闭ListFragment中是否有其他回调或观察者 基本上,一旦列表视图被填充,我想检查列表。如果列表为空,我想显示一个信息对话框,让用户了解如何为列表创建项目 在onLoadFinished()内调用DialogFragment.show()时显示的异常为: 09-18 10:51:08.974 25310-25310/[pkg]E/AndroidRuntime﹕ 致命异常:主Android ListFragment:加载程序完成后显示对话框,android,android-listfragment,android-cursorloader,Android,Android Listfragment,Android Cursorloader,加载程序完成后,如何显示DialogFragment?当我在onLoadFinished()装入器回调中执行此操作时,我得到一个异常,即我无法在那里执行该操作。我想这是因为我试图在UI线程之外的其他地方显示对话框(因为ListFragment加载程序异步运行)。在装入程序完成时触发的封闭ListFragment中是否有其他回调或观察者 基本上,一旦列表视图被填充,我想检查列表。如果列表为空,我想显示一个信息对话框,让用户了解如何为列表创建项目 在onLoadFinished()内调用Dialog
java.lang.IllegalStateException:无法在onLoadFinished内部执行此操作您无法在onLoadFinished和其他回调中添加片段。这是和我有关的。尽管您可以从中创建与DialogFragment相同的包,但可以扩展它并使用ovveride show方法。但你最好不要这样做 来自: …没有任何声明将在UI线程上调用onLoadFinished的内容,因此理论上,您应该使用类似Reto书中建议的处理程序 考虑到这一点,应采取以下措施:
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// Show your dialog here.
}
});
}
@覆盖
public void onLoadFinished(加载器,光标){
runOnUiThread(新的Runnable(){
@凌驾
公开募捐{
//在这里显示您的对话框。
}
});
}
假设您的侦听器是在活动中实现的。否则,请使用。有什么例外?我已经在帖子中添加了例外。看来你是对的。你试过RunNouithRead吗?我刚试过curtisLoew描述的RunNouithRead,但我得到了相同的异常。好的,然后像这样运行你的Runnable:new Handler().post(r)