我无法在 DialogFragment
中修改UI onPostExecute我已经阅读了有关此内容的所有问题。这不是同一个案例。相信我。
我知道AsyncTask doInBackground函数有自己的线程,你必须触摸onPreExecute和onPostExecute中的视图。 所有这些东西,应用程序仍在崩溃。
我得到的例外是:
E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at .onPostExecute(CustomDialogFragment.java:310)
at android.os.AsyncTask.finish(AsyncTask.java:631)
答案 0 :(得分:0)
而不是activity.runOnUiThread使用getActivity()。runonUiThread
答案 1 :(得分:0)
正如@Raghunandan正确提到的那样,在UI线程上调用了onPostExecute
,因此不需要runOnUiThread
。
更改AsyncTask以在其构造函数中获取Context:
private class DownloadFilesTask extends AsyncTask<String,String,String> {
private Context context;
public DownloadFilesTask(Context context) {
super();
this.context = context;
}
并像这样使用它:
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Toast.makeText(context,
"why onPostExecute not work", Toast.LENGTH_SHORT).show();
}
不要忘记使用上下文实例化AsyncTask:
final DownloadFilesTask downloadTask = new DownloadFilesTask(getActivity());
答案 2 :(得分:0)
问题比看上去要深刻得多。
真正的问题是因为我从onPostExecute使用Toast.show()和dimiss()对话框。 小时间延迟(100ms)解决了这个问题