3

当你即将开始一个新的活动,并且想要传递一个变量时,你通常只是这样做:

Intent intent = new Intent().setClass(this, NewActivity.class);
intent.putExtra("variable", variable);
startActivity(intent);

当您阅读额外内容时(在新活动中),您可以这样做:

Intent intent = getIntent();
if(intent != null)
{
    variable = intent.getIntArrayExtra("variable");
}

现在,在我的应用程序中,我有一个加载屏幕,所有加载都在其中进行。这是在主要活动中进行的。在此过程中,许多变量正在更新/更改。我还有许多其他活动,我需要将这些新更新的变量传递给其中一些活动。问题是这些活动不是由我的主要活动开始的。

有什么办法可以在我的主要活动中做到这一点:

Intent newIntent1 = new Intent().setClass(MainActivity.this, NewActivity1.class);
newIntent1.putExtra("var1", var1);

然后使用startActivity(newIntent1);另一个活动开始活动?

我试图阅读这样的额外内容:

Intent intent;
try
{
    intent = Intent.parseUri("content://com.mycompany.android.MainActivity", 0);
    if(intent != null)
    {
        var1 = intent.getIntArrayExtra("var1");
    }
}
catch (URISyntaxException e)
{
    e.printStackTrace();
}

这不起作用,var1变量为空(如此初始化)。

老实说,我不知道如何做到这一点,Intent.parseUri甚至不知道如何工作。对于像我这样的初学者来说,这方面的文档真的很糟糕。

4

2 回答 2

1

我还有许多其他活动,我需要将这些新更新的变量传递给其中一些活动。

不,你没有。

您需要编写一个真实的数据模型(数据库、内容提供者、静态数据成员中的 POJO)并让所有活动都引用该公共数据模型。

于 2011-08-07T16:53:36.370 回答
0

仅使用广播来通知活动更改会更容易。

于 2011-08-07T15:22:38.983 回答