1

Activity である StartActivity クラスから、インテントを使用して別のアクティビティを呼び出しています。

Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, changePack);
startActivity(intent);

CHANGE_PACK は static final String であり、changePack 値は true です。(デバッグで確認済み)

しかし、私が TabsActivity でこの値を取得しているとき

boolean packChanged = getIntent().getBooleanExtra(StartActivity.CHANGE_PACK, false);

packChanged の値は false です。インターネットで調べましたが、助けが見つかりませんでした。基本的に、アプリケーションの他の場所でまったく同じものを使用しており、正常に動作しています。

うまくいかない理由は誰にでもわかります。

追加: 両方のアクティビティがマニフェストに登録されており、両方のアクティビティの onResume() メソッドでこれを行っています。

4

5 に答える 5

3

マニフェストでTabsActivityandroid:launchModeがどのように宣言されているかを確認してください。の場合singleTop、またはTabsActivity で (onResume の代わりに) をsingleTask使用onNewIntent()して、新しいインテントから新しいエクストラを取得する必要があります。その状況で getIntent は、このアクティビティのインスタンスを作成するために使用された最初の元のインテントを返します

http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent )

PS 例:

public class MyActivity extends Activity {

...

@Override
protected void onNewIntent(final Intent intent) {
    super.onNewIntent(intent);
    boolean packChanged = intent.getBooleanExtra(StartActivity.CHANGE_PACK, false);
}

}

于 2012-06-20T07:33:50.113 に答える
3

getIntent().getBooleanExtra(...)代わりに onCreate で実行してみてください。または、そのインテント オブジェクトからブール値をオーバーライドprotected void onNewIntent(Intent intent)して取得します。

于 2012-06-20T07:31:01.247 に答える
1

私もこの問題を抱えていて、うまく解決できませんでした。私は次のハックを使用することになりました:

Intent intent = new Intent(getApplicationContext(), TabsActivity.class);
intent.putExtra(CHANGE_PACK, Boolean.toString(changePack));
startActivity(intent);

その後

boolean packChanged = Boolean.parseBoolean(getIntent().getStringExtra(StartActivity.CHANGE_PACK));

ハッキーですが、動作します。

于 2012-11-18T22:22:11.317 に答える
0

あなたのコードは問題ないようです。CHANGE_PACK変数を処理している唯一の場所。クラス名と一緒に使用してみてください(静的に宣言されているため)。を使用し intent.putExtra(StartActivity.CHANGE_PACK, changePack);ます。

于 2012-06-20T07:35:06.143 に答える
0

これを使ってみてください

boolean packChanged;

Bundle extra=getIntent().getExtras();
    if(extra!=null){
        packChanged=extra.getBoolean("enter your key which u have used in StartActivity");

    }
于 2012-06-20T07:48:34.950 に答える