【问题标题】:Android: Adding a delay to the display of toast?Android:为 toast 的显示添加延迟?
【发布时间】:2014-08-24 00:15:07
【问题描述】:

如果某个条件是truefalse,我希望显示toast。但是,在显示之前,我希望 delaytwo seconds 祝酒。

我该怎么做?

当前 if 语句:

if (result.equals("true")) {

                        loginDataBaseAdapter.updateUploadedRecord(sessionId);

                            Toast.makeText(MathsGameResults.this,
                                    "Data is successfully uploaded.",
                                    Toast.LENGTH_LONG).show();

                        } else {
                            Toast.makeText(
                                    MathsGameResults.this,
                                    "Error while uploading. Please try again later.",
                                    Toast.LENGTH_LONG).show();
                        }

                    }

【问题讨论】:

  • @james Thread.sleep() 冻结 UI。你必须使用处理程序

标签: android toast


【解决方案1】:

试试这个..

使用Handler

            // Handler which will run after 2 seconds.
            new Handler().postDelayed(new Runnable() {

                @Override
                public void run() {
                      Toast.makeText(MathsGameResults.this,
                                "Data is successfully uploaded.",
                                Toast.LENGTH_LONG).show();
                }
            }, 2000);

【讨论】:

  • 当我尝试这个时,我得到了错误:在范围内没有可以访问 MathsGameResults 类型的封闭实例
  • @user3968848 你在FragmentActivity 中使用它吗?
  • 在活动中,而不是在片段中
【解决方案2】:

延迟代码可能并不总是成功,尤其是在 RAM 较低的设备上。这是你可以做的。

定义这个变量

boolean result;

如果数据上传成功,则在loginDataBaseAdapter代码末尾添加此代码

result = true;
showResult(result);

然后添加这个方法-

public void showResult(boolean i){

    if (result == true;) {

        loginDataBaseAdapter.updateUploadedRecord(sessionId);

        Toast.makeText(
                          MathsGameResults.this,
                          "Data is successfully uploaded.",
                          Toast.LENGTH_LONG
                      ).show();

    } else {

        Toast.makeText(
                       MathsGameResults.this,
                       "Error while uploading. Please try again later.",
                       Toast.LENGTH_LONG
                      ).show();
    }         
}

无论如何这里是如何延迟代码-

final Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {

            if (result == true;) {

                loginDataBaseAdapter.updateUploadedRecord(sessionId);

                Toast.makeText(
                                MathsGameResults.this,
                                "Data is successfully uploaded.",
                                Toast.LENGTH_LONG
                              ).show();

            } else {

                Toast.makeText(
                               MathsGameResults.this,
                               "Error while uploading. Please try again later.",
                               Toast.LENGTH_LONG
                              ).show();
           }

        }
}, 5000);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2018-04-18
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多