吐司没有在合适的时间出现

时间:2013-04-28 15:25:27

标签: android

点击一个按钮,我想显示一个Toast Message,同时有一些工作正在完成但是即使我在开始时也没有显示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();

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

1 个答案:

答案 0 :(得分:1)

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

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

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

首先是您发送到doInBackground()中要使用的异步任务对象的内容。  其次,您使用onProgressUpdate()更新主线程。 第三个是doInBackground()返回的内容,onPostExecute()将获取并用于显示结果(再次 - 在主线程中)。您不必使用它们中的任何一个(在我给您的代码中使用LIke),但在扩展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.
    }
}