Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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 无法从倒计时(在服务内部运行)的单击中显示Toast消息_Android_Handler_Toast_Countdowntimer - Fatal编程技术网

Android 无法从倒计时(在服务内部运行)的单击中显示Toast消息

Android 无法从倒计时(在服务内部运行)的单击中显示Toast消息,android,handler,toast,countdowntimer,Android,Handler,Toast,Countdowntimer,我试图在CountDownTimer类的onTick()函数中显示Toast消息。此类正在服务中运行 简单的Toast.maketext(“标记”、“Toast消息”)-使应用程序崩溃 所以我尝试了一个处理程序——使用该处理程序,应用程序不会崩溃,但我也没有看到toast消息。任何关于错误的帮助都是有帮助的 我确信我的倒计时计时器运行正常,onTick正在被调用——我已经添加了LogCat语句来确认这一点 public class MyServicelockCountdownTimer exte

我试图在CountDownTimer类的onTick()函数中显示Toast消息。此类正在服务中运行

简单的Toast.maketext(“标记”、“Toast消息”)-使应用程序崩溃

所以我尝试了一个处理程序——使用该处理程序,应用程序不会崩溃,但我也没有看到toast消息。任何关于错误的帮助都是有帮助的

我确信我的倒计时计时器运行正常,onTick正在被调用——我已经添加了LogCat语句来确认这一点

public class MyServicelockCountdownTimer extends CountDownTimer {

    public FBServicelockCountdownTimer(long millisInFuture,
            long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onFinish() {
    }

    @Override
    public void onTick(long millisUntilFinished) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(
                                    getApplicationContext(),
                                    "This is toast message from inside onTick of the CountDownTimer inside the Service",
                                    Toast.LENGTH_LONG).show();
                        }
                    });

                } else {

                }
            } catch (NameNotFoundException e) {
                e.printStackTrace();
            }
        }
    }
}
尝试使用Looper类的getMainLooper()方法,该方法-

返回应用程序的主循环器,它位于应用程序的主线程中。//来自android文档

您还应该考虑绑定活动以处理UI更新。


请检查此项以了解更多详细信息。

尝试使用活动中的
this
,而不是使用getApplicationContext()

在onReceive中,您将看到上下文


在onReceive()中为您提供的上下文上调用getApplicationContext(),就像在活动上调用getApplicationContext()。

我假设您的处理程序是附加到主线程循环器上创建的?您是否将服务绑定到活动?检查此线程这是在服务中,而不是在活动中尝试此链接可能对您有帮助[链接不可用没有onReceive
Toast.makeText(
    YourActivity.this,
    "This is toast message from inside onTick of the CountDownTimer inside the Service",
    Toast.LENGTH_LONG).show();
public abstract void onReceive (Context context, Intent intent)