0

单击按钮时,我想在完成一些工作时显示 Toast 消息,但即使我在开始时有它,直到最后才显示 Toast

if (id == R.id.edit_score_button_update) {

Toast.makeText(this, "Updating please wait", Toast.LENGTH_LONG).show();

//Some code that update database

finish();

强制首先显示吐司的最佳方法是什么。谢谢你的时间

4

1 回答 1

1

您需要在您的活动类中创建一个扩展类AsyncTask

UpdateDBTask task = new UpdateDBTask();
task.execute(someString);

在您的异步任务中,您定义了 3 个变量 - (所有变量都不能是原始的:int例如,含义必须是Integer)。

首先是您发送到异步任务对象以在doInBackground(). 其次是您用来更新主线程的onProgressUpdate(). 第三是doInBackground()返回的内容,onPostExecute()并将获取并用于显示结果(再次 - 在主线程中)。你不必使用它们中的任何一个(就像我给你的代码一样),但是你必须在扩展AsyncTask.

public class UpdateDBTask extends AsyncTask<String, Integer, String> {

    @Override
    protected void onPreExecute() {
        //Everything written here will happen in main thread before doInBackground() starts.
    }

    @Override
    protected String doInBackground(String... params) {
        //Do your things in different thread, allowing the main
        //thread change things on GUI (Like showing toast...)
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
    //Everything you do here happens in the main thread AFTER doInBackground() is done.
    }
}
于 2013-04-28T16:04:32.473 回答