2011-10-17 22 views
0

私は同じアクティビティのインスタンスがたくさんあります。 今のところスタックをA1→A2→A3→A4→A5とし、A5を上にします。 私が今までに次のアクティビティを起動するコードは、そのようなものです:アクティビティのインスタンスを切り替える最も簡単な方法

Intent intent = new Intent(); 
intent.putExtra("some option", "its value"); 
intent.setClass(this, MyActivity.class); 
startActivity(intent); 

私は任意のインスタンスから前にすべてのインスタンスを持参する機会を持っている必要があります。たとえば、私は(!)A2を再開したいです。アクティビティスタックを並べ替えることができれば非常に良いことですが、可能であれば、最も簡単な方法だと思います。 私はフラグを使用するのが最も簡単な方法ではないと思うし、問題を完全に解決することはできません。 簡単な切り替えインスタンスのクラスを作成したいのですが、最初に手動で行う必要があります。 私はいろいろ試しました。

Intent intent = new Intent(A2, MyActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

A2は、私のアクティビティクラス(タイプ - アクティビティ)の静的変数です。私のA2インスタンスへのポインタを含んでいます。 AにはA2などのA1〜A5変数もあります。 Log.eをonResume関数に追加しました。私のコードではA2の代わりにA5が前面に表示されていることがわかります(ログには何も表示されません)。

は私が

+1

なぜ同じクラスのインスタンスが非常に多くしたいのですか?あなたがしようとしていることは可能なはずですが、ベストプラクティスのシナリオのようには見えません。 – BMo

+2

BMo、良い点を作る。あなたは本当に同じ活動のいくつかのインスタンスを持ってはいけません。また、ガベージコレクタが必要なときにメモリを解放するのを防ぐので、実際にはアクティビティへの静的参照を保持したくない場合もあります。 – slayton

+0

@BMoオンラインストアのアプリケーションを作成します。たとえば、カテゴリのリストを含むカタログページは完全に似ています。私はそれらの間を自由に移動できるようにしたい。私も同じ活動に基づいて善のカードを作った。それは私のほうが簡単だったようだ。たぶん私は別のアクティビティでカートを作るでしょう。しかし、私はまだカタログでアクティビティのインスタンス間を移動する必要があります。私はこのサイトで同様の問題の話題をたくさん読んだことがありますが、特定の課題の中でこの問題を避けるようアドバイスしました。私が欲しいものをすることは本当に不可能ですか? – GAP

答えて

0

:)を助けてください、私はあなたの代わりに活性のフラグメントにカタログページを移動することを示唆していることはできますか?そうすれば、それぞれ固有のタグを持ち、add()またはremove()という自由に複数のインスタンスを作成できます。

詳細については、Android開発サイトhereおよびhereをご覧ください。

Android 3.0以下で作業している場合は、互換性パッケージを使用してFragment supportを取得できることに注意してください。

+0

に基づいてこれを行う予定です。古いデバイスでの互換性の問題を避けるため、Android 1.6で動作します。 このソリューションを代替品とみなしてくれたFragmentsに感謝します。 その間に、より直接的な解決策を見つけることができることを願っています。 – GAP

関連する問題