Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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
Java 如何在其余代码之前执行一行代码?更改按钮上的文本_Java_Android_Button_Sequential - Fatal编程技术网

Java 如何在其余代码之前执行一行代码?更改按钮上的文本

Java 如何在其余代码之前执行一行代码?更改按钮上的文本,java,android,button,sequential,Java,Android,Button,Sequential,在我的程序中有一个按钮,当点击时,它会访问一个巨大的数据库,需要一两秒钟才能完成,然后消失。在等待期间,我希望按钮的文本更改为“加载…”或其他内容。我试过了 myButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { myButton.setText("LOADING..."); //then do other stuff } 但当然

在我的程序中有一个按钮,当点击时,它会访问一个巨大的数据库,需要一两秒钟才能完成,然后消失。在等待期间,我希望按钮的文本更改为“加载…”或其他内容。我试过了

myButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        myButton.setText("LOADING...");
        //then do other stuff
    }

但当然,代码行不是按顺序执行的,因此文本不会显示(或者,在消失之前显示得太快,以至于看不到)。有没有一个简单的方法可以做到这一点?我想到的唯一一件事是使用计时器,但(1)我不太确定如何使用,以及(2)对于这样一行简单的代码来说,这似乎过于复杂。

您可以使用处理程序在Db查询完成时通知您,并适当地更改文本。对于使用处理程序,我提到了这个

,您可以使用处理程序在Db查询完成时通知您,并适当地更改文本。对于使用处理程序,我引用了这个

实际上文本正在更改,它只是还没有被呈现,请尝试使按钮失效()。您也可以通过在单击按钮后删除长进程来测试它。另外,如果您有一个较长的进程,请确保它不在主线程上,并可能使用一个

如果文本正在更改,它只是还没有被呈现,请尝试使用按钮。您也可以通过在单击按钮后删除长进程来测试它。另外,如果您有一个较长的进程,请确保它不在主线程上,并可能使用

,问题是所有操作都是在UI线程上完成的,长数据库访问会阻止UI线程并阻止显示“加载…”文本。您应该在UI线程之外执行数据库操作。阅读。

问题在于所有操作都是在UI线程上完成的,长时间的数据库访问会阻塞UI线程,并阻止显示“加载…”文本。您应该在UI线程之外执行数据库操作。阅读。

您需要使用AsyncTask访问数据库。在runInBackground()中,您需要将按钮设置为显示“加载”。你可以参考这个-


这也是一个非常好的教程,可以帮助您完成所要做的工作。

您需要使用AsyncTask访问数据库。在runInBackground()中,您需要将按钮设置为显示“加载”。你可以参考这个-


这也是一个非常好的教程,可以帮助您完成所要做的工作。

将其设置为在Db开始加载时加载,并在加载停止时更改为完成。

将其设置为在Db开始加载时加载,并在加载停止时更改为完成。

这是一个重复的任务:检查异步任务这是一个非常复杂的任务重复:检查AsyncTask我收到错误“只有创建视图的原始线程才能接触其视图”我收到错误“只有创建视图的原始线程才能接触其视图”