我有活动A,从这个活动我开始活动B,它有一个按钮“ok”。当点击按钮时,会发生一些事件,该事件由服务处理,服务在B完成后显示活动B中的吐司。
问题是Activiti B停止运行太快,用户无法看到吐司足够长的时间。
我怎样才能等到活动A来到前面并在那里显示吐司(在A中)?
答案 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)
试试这个:
显示如何使用startActivityForResult的教程链接如下:
答案 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){}
};
}开始();