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変数はnullです(そのように初期化されています)。

正直なところ、これを行う方法も、どのように機能するかIntent.parseUriさえわかりません。これに関するドキュメントは、私のような初心者にとっては本当に悪いものです。

4

2 に答える 2

1

他にも多くのアクティビティがあり、これらの新しく更新された変数をこれらのアクティビティのいくつかに渡す必要があります。

いいえ、あなたはしません。

実際のデータ モデル (データベース、コンテンツ プロバイダー、静的データ メンバー内の POJO) を記述し、すべてのアクティビティがその共通データ モデルを参照するようにする必要があります。

于 2011-08-07T16:53:36.370 に答える
0

ブロードキャストを使用してアクティビティに変更を通知する方が簡単です。

于 2011-08-07T15:22:38.983 に答える