Java 以编程方式启动和取消toast

Java 以编程方式启动和取消toast,java,android,stored-procedures,toast,duration,Java,Android,Stored Procedures,Toast,Duration,在我的应用程序中,我有一个过程可以持续2到15秒左右。我想做的是设置一种吐司,在程序开始时显示: Loading values. Wait... 刚才,我把吐司的持续时间设置为短,因为如果这个过程持续5秒或更少,那么长的时间就是,非常长的时间。但将持续时间设置为较短后,当持续时间超过10秒时,土司将消失,没有消息显示应用程序仍在处理,因此用户可以开始触摸东西 我想要的是设置一些类似于祝酒词的内容,但我可以在过程完成时以编程方式取消它。有什么想法吗?下面是一个例子: final Toast to

在我的应用程序中,我有一个过程可以持续2到15秒左右。我想做的是设置一种吐司,在程序开始时显示:

Loading values. Wait...
刚才,我把吐司的持续时间设置为短,因为如果这个过程持续5秒或更少,那么长的时间就是,非常长的时间。但将持续时间设置为较短后,当持续时间超过10秒时,土司将消失,没有消息显示应用程序仍在处理,因此用户可以开始触摸东西

我想要的是设置一些类似于祝酒词的内容,但我可以在过程完成时以编程方式取消它。有什么想法吗?

下面是一个例子:

final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT
下面是一个例子:

final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();

Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
       @Override
       public void run() {
           toast.cancel(); 
       }
}, 1000); //specify delay here that is shorter than Toast.LENGTH_SHORT

我建议您只需将Toast duration设置为,然后使用Toast.makeText(…)返回的Toast对象在流程完成时取消它

Toast t = Toast.makeText(....., YERY_LONG_TOAST_TIME);
t.show();

public void onYourTaskFinished() {
    t.cancel();
}
差不多吧。
我个人建议使用进程对话框顺便说一句:

我建议您只需将Toast duration设置为,然后使用Toast.makeText(…)返回的Toast对象,在流程完成时取消它

Toast t = Toast.makeText(....., YERY_LONG_TOAST_TIME);
t.show();

public void onYourTaskFinished() {
    t.cancel();
}
差不多吧。
我个人建议使用一个ProgressDialog顺便说一句:

您可以在创建Toast时拥有一个处理程序,将其传递给作业,并在作业开始时调用show()方法,在作业结束时调用cancel()方法


然而,根据您的描述,祝酒词可能不是您的最佳选择。Toast更像是一个提示,如果用户没有注意到它,它几乎没有影响。如果你不想让用户在加载数据时触摸任何东西,或者你只是想让用户知道你的工作进度,那么你可能需要一个关于你的应用程序的背景信息。

你可以在创建Toast时拥有一个处理程序,将它传递给你的作业并调用show()方法,并在作业开始时调用cancel()方法



然而,根据您的描述,祝酒词可能不是您的最佳选择。Toast更像是一个提示,如果用户没有注意到它,它几乎没有影响。如果你不想让用户在加载数据时触摸任何东西,或者你只是想让用户知道你的工作进度,那么你可能需要一个关于你的应用程序的背景信息。不要为此使用Toast。您应该使用进度对话框,也可以将进度指示器添加到通知栏。所以用户即使不在你的应用程序中也能看到进度。

不要为此使用Toast。您应该使用进度对话框,也可以将进度指示器添加到通知栏。所以用户即使不在你的应用程序中也能看到进展。

谢谢@silvia_aut,但我不想设置比默认值短或长的祝酒词。我只是想知道如何显示某种消息,我可以启动并取消程序调用,然后对上述变量进行正常的toast,然后如果需要,您可以显示或取消它。谢谢@silvia_aut,但我不会尝试将toast设置为比默认值短或长。我只是想知道如何显示某种消息,我可以启动并取消程序调用,然后对上述变量进行正常的祝酒,然后如果需要,您可以显示或取消它。不幸的是,它没有显示如何在不确定的时间内保持显示。不幸的是,它没有显示如何在不确定的时间内保持它的显示。我可以像您使用toast那样使用processDialog以编程方式启动和取消它吗?我认为ProcessDialog只是用来显示进程进度的某种条形图。是的,它可以通过编程取消,尤其是在网络操作或进行耗时的密集计算时使用。下面是一个示例:
将吐司持续时间设置为30秒左右
YERY_LONG_Toast_TIME
不相关。。。它的长度始终为3.5秒。短2秒,你说得对。对不起,我弄错了。我将编辑它,谢谢。@Philipp Jahoda我正试图将progressDialog设置为这个案例的更好选项。我遇到的唯一问题是在它的参数中设置一个(r.string.wait),而不是在其上设置句子,以实现未来的语言兼容性。但是它告诉我们这个方法(context,charsequence,charsequence,booblean)不适用于(context,string,string,boolean)我可以像使用toast那样使用processDialog以编程方式启动和取消它吗?我认为ProcessDialog只是用来显示进程进度的某种条形图。是的,它可以通过编程取消,尤其是在网络操作或进行耗时的密集计算时使用。下面是一个示例:
将吐司持续时间设置为30秒左右
YERY_LONG_Toast_TIME
不相关。。。它的长度始终为3.5秒。短2秒,你说得对。对不起,我弄错了。我将编辑它,谢谢。@Philipp Jahoda我正试图将progressDialog设置为这个案例的更好选项。我遇到的唯一问题是在它的参数中设置一个(r.string.wait),而不是在其上设置句子,以实现未来的语言兼容性。但是它告诉我们这个方法(context,charsequence,charsequence,booblean)不适用于(context,string,string,boolean),最后我使用了progressDialog。谢谢最后我使用了progressDialog。谢谢