Android如何从一个活动移动到两个不同的活动
我有一个有按钮的活动A,如果你不点击该按钮,那么它必须在一定时间后打开另一个活动B,如果你点击按钮,它必须打开活动C,但不应该打开活动B。 我使用处理程序来执行此操作,但当我单击按钮时,它会打开活动C,但在时间限制后也会打开活动BAndroid如何从一个活动移动到两个不同的活动,android,android-activity,Android,Android Activity,我有一个有按钮的活动A,如果你不点击该按钮,那么它必须在一定时间后打开另一个活动B,如果你点击按钮,它必须打开活动C,但不应该打开活动B。 我使用处理程序来执行此操作,但当我单击按钮时,它会打开活动C,但在时间限制后也会打开活动B new Handler().postDelayed(new Runnable() { @Override public void run() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
startActivity(mainIntent);
finish();
}
}, SPLASH_DISPLAY_LENGTH);
}
});
您可以检查按钮是否被单击,然后打开活动C,否则打开活动B,然后单击布尔变量false或true
If(Button1.isClicked())
{
Intent to activity C
}
else
{
Intent to activity B
}
您可以检查按钮是否被单击,然后打开活动C,否则打开活动B,然后单击布尔变量false或true
If(Button1.isClicked())
{
Intent to activity C
}
else
{
Intent to activity B
}
单击按钮“loadActivityC=false”时,可以设置布尔值。最初声明为true。然后,如果是(loadActivityC),则根据意图启动活动。单击按钮时,可以设置一个布尔值,“loadActivityC=false”。最初声明为true。然后,如果是(loadActivityC),则根据意图启动活动。您必须使用标志。您可以将代码编写为
boolean flag=true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
if(flag){
startActivity(mainIntent);
finish();}
}
}, SPLASH_DISPLAY_LENGTH);
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent mainIntent = new Intent(Driving.this, Page.class);
flag=false;
startActivity(mainIntent);
}
});
你必须使用旗帜。您可以将代码编写为
boolean flag=true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
if(flag){
startActivity(mainIntent);
finish();}
}
}, SPLASH_DISPLAY_LENGTH);
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent mainIntent = new Intent(Driving.this, Page.class);
flag=false;
startActivity(mainIntent);
}
});
即使移动到不同的活动,打开ActivityB的处理程序代码仍将运行。您应该创建一个变量来检查其他活动是否打开。或者您可以在ActivityA的
onPause()
中使用:
handler_ins.removeCallbacksAndMessages(null)
这将在切换到其他活动之前取消处理程序当前挂起的任务。即使您移动到其他活动,打开ActivityB的处理程序代码仍将运行。您应该创建一个变量来检查其他活动是否打开。或者您可以在ActivityA的
onPause()
中使用:
handler_ins.removeCallbacksAndMessages(null)
Runnable runnable = new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
startActivity(mainIntent);
finish();
}
}, SPLASH_DISPLAY_LENGTH);
Handler myHandler = new Handler();
myHandler.postDelayed(runnable, SPLASH_DISPLAY_LENGTH);
这将在切换到其他活动之前取消处理程序当前挂起的任务
Runnable runnable = new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
startActivity(mainIntent);
finish();
}
}, SPLASH_DISPLAY_LENGTH);
Handler myHandler = new Handler();
myHandler.postDelayed(runnable, SPLASH_DISPLAY_LENGTH);
并在打开新活动之前单击按钮使用它
myHandler.removeCallbacks(runnable);
并在打开新活动之前单击按钮使用它
myHandler.removeCallbacks(runnable);
当用户单击activity C按钮时,只需取消处理程序。当用户单击activity C按钮时,只需取消处理程序。您可以创建处理程序对象,并在按钮单击后取消处理程序线程
private Handler myHandler = new Handler();
Runnable myRunnableObj = new Runnable()
{
public void run()
{
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
startActivity(mainIntent);
finish();
}
};
myHandler.postDelayed(myRunnableObj, SPLASH_DISPLAY_LENGTH);
单击按钮时,取消处理程序回调
myHandler.removeCallbacks(myRunnableObj);
您可以创建处理程序对象,然后在按钮单击“取消处理程序线程”后
private Handler myHandler = new Handler();
Runnable myRunnableObj = new Runnable()
{
public void run()
{
Intent mainIntent = new Intent(Driving.this, FinalPage.class);
startActivity(mainIntent);
finish();
}
};
myHandler.postDelayed(myRunnableObj, SPLASH_DISPLAY_LENGTH);
单击按钮时,取消处理程序回调
myHandler.removeCallbacks(myRunnableObj);
希望它能帮助你
希望它能对您有所帮助。您可以使用intent或check Condition传递flag您可以使用intent或check Condition传递flag这是一个完美的答案。这是一个完美的答案。我试着按照您所说的添加,但它仍在运行。运行上述代码,它对我来说绝对有效。:)我试着去投票,但由于我是个新手,我需要至少15个声誉问题。谢谢:)我试着像你说的那样添加,但它仍然在做sameI,运行上面的代码,它对我来说绝对有效。:)我试着去投票,但由于我是个新手,我需要至少15个声誉问题。谢谢:)您好,我使用了您的代码,但当我使用myHandler.removeCallbacks(myRunnableObj)时,它给了我错误;在onclick(按钮)Ok中,问题出在哪里?removeCallbacksAndMessages(null)使用了此选项而不是removeCallbacks(myRunnableObj)嗨,我使用了您的代码,但当我使用myHandler.removeCallbacks(myRunnableObj)时,它给了我错误;在onclick(按钮)Ok中,问题出在哪里?removecallbacksandsessages(null)使用了它而不是removeCallbacks(myRunnableObj)