[英]Android: Is it possible to pass intent several activities ahead?
例如:我有5个活动:
活动A->活动B->活动C->活动D->活动E
活动A 必须按顺序进行活动B,然后是C,然后是D,然后是E。
我想将活动A的意图传递给活动E, 而不通过B,C,D。
有可能这样做吗?
我目前在活动A中传递的意图:
fab = (FloatingActionButton) rootView.findViewById(R.id.fabAddConList);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent createContactList = new Intent(context, ActivityB.class);
createContactList.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
createContactList.putExtra("userid", userID);
startActivity(createContactList);
}
});
我目前在活动E中的接收意图:
Intent lastIntent = getIntent();
userid = lastIntent.getStringExtra("userid");
- - - - - - - - - - - - - - - - - -编辑 - - - - - - - ---------------------------
根据本文中的代码,我将活动A的意图传递给活动B而不是活动E,因为单击按钮时我想转到活动B。 但是,如何在不将“用户ID”传递给活动B并将其保留到活动E的情况下进入活动B?
不,这是不可能有一个Activity
传递一个Intent
到下一个Activity
的序列中而无需首先接收到Intent
。 还有什么要继续下去的?
在您的情况下,请考虑将Activity
E的信息写入SharedPreferences
。 他们像意图一样使用键值对来存储数据,另请参见此文档链接 。
顺便说一句,从安全角度来看:至少在某些android版本中,与startActivity()
一起使用的Intent
不是您的应用专用的。 因此请注意不要使用startActivity()
传递敏感数据。
是的,只要意图不明确,一切都会从头到尾通过。 每当您要清除意图数据时,您都可以致电
getIntent().removeExtra("key");
如果您要转发意图。 你可以做到
Intent newIntent = new Intent(receivedIntent);
不,您必须传递所有活动的价值。
除此之外,您可以使用SharedPreferences
将值存储在Activity A
并在Activity E
获取该值。 检查此以供参考。
另一种方法是静态变量,在A中获取public static
变量,然后从Activity E
访问它
在活动A中
public static String yourVariable="value";
在活动E中,使用A.yourVariable
访问它
对于我的应用程序,用户将必须按顺序执行活动A到E。 用户不能在没有通过B,C和D的情况下直接从活动A转到活动E。当流程仍按A,B,C,D,E顺序进行时,我是否仍可以将意图从A传递到E?
您的所有活动都按顺序进行,那么您必须使用意图传递所有活动的价值。
替代
使用Preference
存储您的值或static variable
一种选择是使用公共静态变量(或单例)来存储一个值,以供以后另一个活动读取。 通常,您不想使用这样的静态函数,但这对您来说可能是最简单的事情。
这是Java中静态变量的基本应用。 用您要保留的状态声明一个新类:
public class State {
public static String value;
}
在活动A中:
State.value = "value that you want to read in activity E"
在活动E中:
String v = State.value;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.