我有一个应用程序,如果我在某个屏幕上,并且用户试图访问需要身份验证的应用程序的特定部分,它会在继续之前进入登录屏幕。
该应用程序当前所做的是,比如我在屏幕3上,但想要进入屏幕4,但我需要先登录才能进入屏幕4.登录界面显示,登录后,用户是重定向到屏幕1必须返回步骤以返回他们所在的屏幕。
我想要的是,当用户点击按钮进入屏幕4时,会显示登录屏幕,一旦登录,用户就会被发送到屏幕4,然后返回到屏幕3然后点击按钮试。
我试过的是调用finish();一旦用户成功登录,但所有操作都将用户返回到屏幕3,使他们必须单击按钮才能转到屏幕4,这当然现在允许他们登录。
有什么想法我可以在我的应用中实现这个吗?
由于
编辑:标题可能会产生误导,我想不出更好的方式来改写标题。如果可以请继续请求编辑答案 0 :(得分:5)
首先声明
int SIGN_IN_REQUEST = 42;
当用户想要进入屏幕4时:
if (isSignedIn) {
intent = new Intent(this, Screen4Activity.class);
startActivity(intent);
} else {
intent = new Intent(this, SignInActivity.class);
startActivityForResult(intent, SIGN_IN_REQUEST);
}
最后,有一个
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SIGN_IN_REQUEST) {
if (resultCode == Activity.RESULT_OK) {
//User signed in, launch Screen4
intent = new Intent(this, Screen4Activity.class);
startActivity(intent);
} else {
//User cancelled the sign in, deal accordingly
}
}
}
如果用户已登录,则从您的SignInActivity中获取:
setResult(RESULT_OK);
finish();
否则:
setResult(RESULT_CANCELED);
finish();
答案 1 :(得分:0)
完成基本完成当前活动。您应该首先启动要启动的活动,然后完成当前活动。要知道哪个活动膨胀,您可以在调用活动的intent extras中传递它。 只有在登录成功后才需要启动下一个活动。 例如
Intent intent = new Intent(getApplicationContext(), MyActivity.class);
startActivity(intent);
finish();
答案 2 :(得分:0)
Intent可以有另一个Intent参数
Intent nextIntent=new Intent(A.this,B.class);
Intent intent=new Intent(A.this,LoginActivity.class);
intent.putExtra("nextIntent",nextIntent);
然后,当LoginActivity登录成功时,startActivity nextIntent
答案 3 :(得分:0)
您可以使用一个主机Activity和多个Fragments。登录片段将回调到Activity,以便它可以决定下一个片段。