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

时间:2016-07-27 13:12:20

标签: android android-activity

我有一个有按钮的活动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);
            }
        }); 

8 个答案:

答案 0 :(得分:1)

你必须使用旗帜。您可以将代码编写为

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);

            }
        });

答案 1 :(得分:1)

即使您转到不同的活动,打开ActivityB的处理程序代码仍会运行。您应该创建一个变量来检查其他活动是否已打开。或者您可以在ActivityA的onPause()中使用:

handler_ins.removeCallbacksAndMessages(null)

这将在切换到其他活动之前取消处理程序的当前待处理任务。

答案 2 :(得分:0)

您可以检查单击按钮然后打开活动C否则活动B并单击布尔变量false或true

If(Button1.isClicked())
{
           Intent to activity C
}
else
{
           Intent to activity B
}

答案 3 :(得分:0)

单击按钮时可以设置布尔值,'loadActivityC = false'。最初声明它为真。然后,如果(loadActivityC),用意图启动活动。

答案 4 :(得分:0)

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);

答案 5 :(得分:0)

当用户点击活动C按钮时,只需取消处理程序。

答案 6 :(得分:0)

您可以创建处理程序对象,然后在单击按钮后取消处理程序Thread,

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);

答案 7 :(得分:0)

boolean opennigFirstActivity = false;
boolean opennigSecondActivity = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first_activity);

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent mainIntent = new Intent(Driving.this, FinalPage.class);
            if (!opennigSecondActivity) {
                Log.d("First Activity", "Opening Second");
                opennigFirstActivity = true;
                startActivity(mainIntent);
                finish();
            }
        }
    }, 5000);

    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            Intent mainIntent = new Intent(Driving.this, Page.class);
            if (!opennigFirstActivity) {
                Log.d("First Activity", "Opening Third");
                opennigSecondActivity = true;
                startActivity(mainIntent);
            }

        }
    });
}

希望它会对你有所帮助。