繁体   English   中英

Android:是否有可能在未来进行一些活动?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM