Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android runOnUiTHread代码未执行_Android_Android Asynctask - Fatal编程技术网

Android runOnUiTHread代码未执行

Android runOnUiTHread代码未执行,android,android-asynctask,Android,Android Asynctask,出于某种原因,我在runOnUiThread调用中的代码似乎无法执行: ((Activity) ctx).runOnUiThread(new Runnable() { public void run() { Log.d(TAG,"createAndDisplayDialog - Start dialog"); progressDialog = new MyDialog(ctx);

出于某种原因,我在runOnUiThread调用中的代码似乎无法执行:

        ((Activity) ctx).runOnUiThread(new Runnable() {
            public void run() {
                Log.d(TAG,"createAndDisplayDialog - Start dialog");
                progressDialog = new MyDialog(ctx);  
                progressDialog.show();
                Log.d(TAG,"createAndDisplayDialog - Started dialog");
            }
        });
对话框根本不显示

然而,为了使事情更加混乱,它确实在某些情况下起作用,但在其他情况下不起作用

我们拥有的是一个包含数据的列表。该列表包括一个“获取更多数据”按钮。然后,onclick侦听器调用代码获取更多数据,并将其添加到适配器使用的列表中。 当我填充第一批数据时,它会在前一个活动中获取,然后通过适配器发送到显示活动,以便在列表中显示。 在这种情况下会显示对话框。 但是,当我请求获取更多数据时,该对话框将不再显示。这些数据的运行代码与获取原始数据集时使用的代码相同

在这两种情况下,数据的提取都是在异步任务中完成的。数据正常到达,但对话框根本不显示

更让人困惑的是,我们还有其他屏幕,这些屏幕上的数据不是预先获取的。相反,适配器将完成所有工作—获取原始数据和所需的任何其他数据。在这种情况下,对话框显示时没有任何问题


我可能遗漏了一些简单的东西,但似乎找不到。

为什么需要在doInBackground中运行此代码?如果要在整个过程中显示对话框,应在onPreExecute中执行;如果要在以后某个时间显示对话框,应使用onProgressUpdate。@因为这意味着要发布大量代码。要得到触角线并不容易out@Egor问题是,是否显示对话框的决定不是由启动后台任务的同一代码决定的。任务可以在获取数据时在后台启动,也可以在更早的时候发送到后台。这就是为什么我必须在后台做,并通过runOnUi发送。奇怪的是,第一次运行它时,它确实工作了,而且它也在后台。@njzk2 logcat清楚地表明这两个log命令不起作用。runOnUiThread命令本身已被明确执行。这里没有足够的代码来知道发生了什么错误