如何在特定活动中显示服务的吐司

时间:2013-09-16 09:37:53

标签: android toast

我有活动A,从这个活动我开始活动B,它有一个按钮“ok”。当点击按钮时,会发生一些事件,该事件由服务处理,服务在B完成后显示活动B中的吐司。

问题是Activiti B停止运行太快,用户无法看到吐司足够长的时间。

我怎样才能等到活动A来到前面并在那里显示吐司(在A中)?

4 个答案:

答案 0 :(得分:0)

你可以试试这个黑客..

在活动B中创建一个处理程序。在hadler和amp;之前显示Toast用于在处理程序run()方法内返回Activity A的代码。

 Handler handler = new Handler();
 handler.postDelayed(
        new Runnable() {
            public void run() {
                // Place your code here for returning back to activity A
            }
        }, 1000);

  }   

答案 1 :(得分:0)

试试这个:

  • 从活动A和
  • 中将活动B作为 startActivityForResult 启动
  • 然后 onActivityResult 检查您是否获得了结果 活动B没问题
  • 然后在活动A上出现祝酒词。

显示如何使用startActivityForResult的教程链接如下:

https://www.google.co.in/search?client=ubuntu&channel=fs&q=startactivity+for+result+tutorial+android&ie=utf-8&oe=utf-8&gws_rd=cr&ei=pNU2UtvSD8uGrgfPxYGACg

答案 2 :(得分:0)

如果有效,请尝试此操作......

 1. Create a Thread t1=new Thread(new Runnable(){
public void run()
{
//first Activity
}
});t1.start();
 2. join t1

    try

     {

       t1.join();

     }

 3. Similarly,create other thread with Second Activity

 4. This will make second thread to execute only after First .Giving u the time to view the Toast message

`

答案 3 :(得分:0)

我认为你想在吐司解散后完成活动B.你可以在几秒钟内用户定义吐司。但是android没有提供任何API来执行此操作。

我们可以使用反射来解决这个问题。

假设您想在吐司显示10秒后完成活动B.

  

Toast toast = Toast.makeText(this,“ToastMessage”,Toast.LENGTH_SHORT);

     

尝试{

     

//从toast获取“mTN”字段

     

Field field = toast.getClass()。getDeclaredField(“mTN”);

     

field.setAccessible(真);

     

对象obj = field.get(toast);

     

//获取方法“show”

     

Method method = obj.getClass()。getDeclaredMethod(“show”,null);

     

//显示吐司

     

method.invoke(obj,null);

     

} catch(例外e){}

     

// 10秒后解除吐司

     

new Thread(){

     

public void run(){

     

尝试{

     

睡眠(10000);

     

} catch(InterruptedException e){

     

e.printStackTrace();

     

}

     

尝试{

     

Method method = obj.getClass()。getDeclaredMethod(“hide”,null);

     

method.invoke(OBJ,NULL);

     

//完成活动B

     

结束();

     

}   catch(例外e){}

     

};

     

}开始();