1

当我的活动没有从数据库中获取数据时,我会显示一条 Toast 消息来说明这一点。然后我为之前的活动充电,但这次充电非常快,并且 Toast 消息仍然存在几秒钟。我想要这个消息持续时间,但我不知道如何延迟我想在消息之后启动的活动的初始化。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);     
setContentView(R.layout.aeiou);

...

if(!oArrayList.isEmpty()){

    ...

}else{          
    Toast.makeText(this.getApplicationContext(), "NO hay datos", Toast.LENGTH_LONG).show();     

    Intent intent = new Intent(this, PreviousActivity.class);
    startActivity(intent);   
}       

}

4

3 回答 3

5

在“else”中,我添加了一个线程,该线程在显示 Toast 消息并启动下一个 Activity 时休眠。

...}else{           
        Toast.makeText(this.getApplicationContext(), "NO hay datos", Toast.LENGTH_LONG).show();             

        final Intent intent = new Intent(this, OtherActivity.class);        

        Thread thread = new Thread(){
           @Override
           public void run() {
                try {
                   Thread.sleep(3500); // As I am using LENGTH_LONG in Toast
                   startActivity(intent);   
               } catch (Exception e) {
                   e.printStackTrace();
               }
           } 
        };

        thread.start();
    }               
于 2012-05-11T21:12:38.557 回答
2

据我所知,吐司的持续时间只能设置为两个值(长和短)之一,两者都可以由用户定义。

为了设置自己的时间并在结束时收到通知,您需要创建自己的机制而不是内置的 toast ...

尝试使用对话框(可能是progressDialog)或创建一个位于所有其他对话框之上的视图。

于 2012-05-09T23:08:38.753 回答
2
Toast.makeText(this, "your message", Toast.LENGTH_LONG).show();  

(new Handler())
    .postDelayed(
    new Runnable() {
    public void run() {
    // launch your activity here
    }
    }, timeInMillisecondTheToastIsShowingFor);

这将延迟启动活动,无论您想要多长时间

于 2012-05-10T00:38:31.800 回答