Toast消息后启动活动

时间:2012-05-09 22:13:09

标签: android android-intent toast

当我的活动没有从数据库中获取数据时,我会显示一条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);   
}       

}

3 个答案:

答案 0 :(得分: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();
    }               

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

Toast.makeText(this, "your message", Toast.LENGTH_LONG).show();  

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

这会延迟启动活动,无论你想要多长时间