例如:我有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");
----------------------------------- EDIT -------- ---------------------------------
根据我在这篇文章中的代码,我将活动A中的意图传递给活动B而不是E,因为我想在单击按钮时转到活动B.但是如何在不将“用户ID”传递给活动B的情况下进入活动B并保持活动直到活动E?
答案 0 :(得分:1)
不,如果没有先收到Activity
,就不可能Intent
将Activity
传递给序列中的下一个Intent
。怎么传递它?
在您的情况下,请考虑将Activity
E 的信息写入SharedPreferences
。他们使用键值对来存储数据,就像意图一样,另见link to documentation。
顺便说一句,从安全的角度来看:至少在某些Android版本中,与Intent
一起使用的startActivity()
对您的应用来说并非私密。因此,请注意不要使用startActivity()
传递敏感数据。
答案 1 :(得分:0)
是的,只要意图不清楚,一切都将从头到尾传递意图。无论何时想要清理意图数据,都可以调用
getIntent().removeExtra("key");
如果您想转发意图。你可以通过
来做到这一点Intent newIntent = new Intent(receivedIntent);
答案 2 :(得分:0)
不,你必须传递所有活动的价值。
其他,您可以使用SharedPreferences
在Activity A
中存储值,并在Activity E
中获取该值。检查this以供参考。
其他方式是静态变量,在A中取public static
变量并从Activity E
public static String yourVariable="value";
活动E中的使用A.yourVariable
答案 3 :(得分:0)
按顺序对于我的应用,用户必须通过活动A到E 序列。用户不能直接从活动A转到活动E. 没有通过B,C和D.我仍然可以将意图从A传递给E 当过程仍按顺序进行时,如A,B,C,D,E?
您的所有活动然后您必须使用意图传递所有活动的值。
替代
使用Preference
存储您的值或static variable
答案 4 :(得分:-1)
一种选择是使用公共静态变量(或单例)来存储稍后由另一个活动读取的值。通常你不想使用这样的静态,但它可能是你最容易做到的事情。
这是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;