我有一个应用程序,其中我收到一个包含他的位置的短信。在接收短信时,它调用另一个活动开始并将该位置传递给该活动以将其绘制在地图上。在调用第二个活动之前,它显示了像屏幕上的通知一样吐司,但由于呼叫第二次活动,吐司没有出现。我的问题是我们怎样才能延迟从这项活动中调用第二项活动?
答案 0 :(得分:48)
您可以使用以下内容:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i=new Intent(SearxhJobs.this,JobsTypes.class);
startActivity(i);
}
}, 5000);
此处等待最多5秒钟才能启动活动。
希望有所帮助
答案 1 :(得分:7)
您可以使用Handler
这样的
Handler h = new Handler(){
@Override
public void handleMessage(Message msg) {
Intent i = new Intent().setClass(ctx, MainActivity.class);
startActivity(i);
}
};
h.sendEmptyMessageDelayed(0, 1500); // 1500 is time in miliseconds
答案 2 :(得分:2)
创建一个在doInBackground()方法中执行Thread.sleep()的AsyncClass,然后导航到onPostExecute()方法中的新活动。
调用您的Toast消息,然后执行AsyncClass。
答案 3 :(得分:2)
对于Kotlin
Handler().postDelayed({
val i = Intent(this, MainActivity::class.java)
startActivity(i)
}, 5000)
答案 4 :(得分:1)
尝试:
Runnable r = new Runnable() {
@Override
public void run() {
// if you are redirecting from a fragment then use getActivity() as the context.
startActivity(new Intent(SplashActivity.this, MainActivity.class));
// To close the CurrentActitity, r.g. SpalshActivity
finish();
}
};
Handler h = new Handler();
// The Runnable will be executed after the given delay time
h.postDelayed(r, 1500); // will be delayed for 1.5 seconds
答案 5 :(得分:0)
只需设置布局!
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setContentView(R.layout.next); //where <next> is you target activity :)
}
}, 5000);
答案 6 :(得分:0)
以下是一个例子:
Handler TimeDelay=new Handler();
if(previous=="geofence"){
tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null);
Runnable r = new Runnable() {
@Override
public void run() {
/*
Intent intent = new Intent(
MyBroadcastMessageReceiver.class.getName());
intent.putExtra("some additional data", choice);
someActivity.sendBroadcast(intent);*/
tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null);
}
};
TimeDelay.postDelayed(r, 150000);