所以我有 2 个活动,它们是我的应用程序中用户登录过程的一部分。我希望灵活地从应用程序的不同部分启动登录过程,然后转到两个不同的点(有点像重定向 URL 的东西)。我怎样才能做到这一点?我能想到的一种方法是发送一些额外的数据以及启动过程的意图,以指向它应该去的地方。
例子
A->login1->login2->B
X->login1->login2->Y
非常感谢任何帮助或建议。
所以我有 2 个活动,它们是我的应用程序中用户登录过程的一部分。我希望灵活地从应用程序的不同部分启动登录过程,然后转到两个不同的点(有点像重定向 URL 的东西)。我怎样才能做到这一点?我能想到的一种方法是发送一些额外的数据以及启动过程的意图,以指向它应该去的地方。
例子
A->login1->login2->B
X->login1->login2->Y
非常感谢任何帮助或建议。
使用 启动登录活动startActivityForResult
。在 login1 和 login2 中,让您登录过程,然后使用setResult
(OK 或 NOK)然后finish
,因此您最终进入了在启动 login1 之前的 Activity。
您将在 onActivityResult 中收到结果,您将在其中测试结果值并采取相应措施(登录或未登录)。
更多信息:http: //developer.android.com/reference/android/app/Activity.html#StartingActivities
一种可能的解决方案如下所示:
public class A extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
Intent intent = new Intent(this, Login1.class);
intent.putExtra("redirectToComponent",
new ComponentName(this, B.class));
startActivity(intent);
}
}
class Login1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
Intent intent = new Intent(this, Login2.class);
intent.putExtra("redirectToComponent",
getIntent().getParcelableExtra("redirectToComponent"));
startActivity(intent);
}
}
class Login2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
ComponentName component = (ComponentName) getIntent().getParcelableExtra(
"redirectToComponent");
if(component != null) {
Intent redirectIntent = new Intent();
redirectIntent.setComponent(component);
startActivity(redirectIntent);
}
}
}
class B extends Activity {
//...
}
您可以在登录后使用putExtra传递所需活动的名称(字符串)以启动或重定向登录活动,并在登录后添加一个条件以检查哪个字符串表示要重定向的活动。
例子:
A->(**putExtra("B")**)->login1->login2->(**getExtra, condition**)->B
X->(**putExtra("Y")**)->login1->login2->(**getExtra, condition**)->Y