Android:是否有可能提前通过几项活动?

时间:2016-02-10 06:42:51

标签: java android android-intent

例如:我有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?

5 个答案:

答案 0 :(得分:1)

不,如果没有先收到Activity,就不可能IntentActivity传递给序列中的下一个Intent。怎么传递它?

在您的情况下,请考虑将Activity E 的信息写入SharedPreferences。他们使用键值对来存储数据,就像意图一样,另见link to documentation

顺便说一句,从安全的角度来看:至少在某些Android版本中,与Intent一起使用的startActivity()对您的应用来说并非私密。因此,请注意不要使用startActivity()传递敏感数据。

答案 1 :(得分:0)

是的,只要意图不清楚,一切都将从头到尾传递意图。无论何时想要清理意图数据,都可以调用

getIntent().removeExtra("key"); 

如果您想转发意图。你可以通过

来做到这一点
Intent newIntent = new Intent(receivedIntent);

答案 2 :(得分:0)

不,你必须传递所有活动的价值。

其他,您可以使用SharedPreferencesActivity A中存储值,并在Activity E中获取该值。检查this以供参考。

其他方式是静态变量,在A中取public static变量并从Activity E

访问它 活动A中的

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;