Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何从一个活动移动到两个不同的活动_Android_Android Activity - Fatal编程技术网

Android如何从一个活动移动到两个不同的活动

Android如何从一个活动移动到两个不同的活动,android,android-activity,Android,Android Activity,我有一个有按钮的活动A,如果你不点击该按钮,那么它必须在一定时间后打开另一个活动B,如果你点击按钮,它必须打开活动C,但不应该打开活动B。 我使用处理程序来执行此操作,但当我单击按钮时,它会打开活动C,但在时间限制后也会打开活动B new Handler().postDelayed(new Runnable() { @Override public void run() {

我有一个有按钮的活动A,如果你不点击该按钮,那么它必须在一定时间后打开另一个活动B,如果你点击按钮,它必须打开活动C,但不应该打开活动B。 我使用处理程序来执行此操作,但当我单击按钮时,它会打开活动C,但在时间限制后也会打开活动B

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)