0

B のマニフェストでは次のようになります。

<activity android:name="BActivity" >
    <intent-filter>
        <action android:name="ACTION_TEST" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

そしてグローバル変数を持っていました。

A の起動コードでは次のようになります。

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("package name","package name.BActivity"));
startActivity(intent);

B_app を正常に起動できます。
しかし、A から B を起動し、B のアイコンをクリックして B を直接起動しますが、グローバル変数はそれらの間で同じです。
A から起動した B と直接起動したい 2 つの独立したアプリです。
どうすればいいですか?

4

1 に答える 1

1

A からアクティビティ B をリーチする場合、A から起動されたことを示すブール値を B に渡すことができます。たとえば、次のように B からアクティビティ A を起動します。

Bundle b = new Bundle();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName("package name", "package name.BActivity"));
b.putBoolean("fromA", true);
intent.putExtras(b);
startActivity(intent);

onCreate()アクティビティ B で、次のようにバンドルがあるかどうかを確認します。

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Bundle extras = getIntent().getExtras();
    if (extras != null)
    {
        // Activity launched from Activity A
    } else
    {
        // Actitivity launched from launcher  
            // clear the global variables
    }
}

ランチャーから起動した場合は、グローバル変数をクリアできます。

于 2013-01-17T03:46:45.723 に答える