2

クリックするとアクティビティ B に移動するボタンが付いたアクティビティ A があります。戻るボタンを押すと、このアクティビティ B からアクティビティ A に戻ります。しかし、もう一度アクティビティ A のボタンをクリックすると、アクティビティ B の新しいインスタンスが起動されます。

私の質問:アクティビティBの戻るボタンを押すとインスタンスが保存され、アクティビティAのボタンをもう一度クリックすると、保存されたBのインスタンスが新しいインスタンスではなく起動されるようにする方法はありますか.

解決を願って..

4

3 に答える 3

0

データを渡したくない場合、または単に前のアクティビティに戻りたい場合

finish()  in onClick
于 2012-04-21T13:21:16.710 に答える
0

http://developer.android.com/reference/android/app/Activity.html

さらに、メソッド onSaveInstanceState(Bundle) は、アクティビティをそのようなバックグラウンド状態にする前に呼び出されます。これにより、アクティビティ内の動的なインスタンスの状態を指定されたバンドルに保存し、アクティビティが後で onCreate(Bundle) で受け取ることができます。再作成する必要があります。

于 2012-04-21T13:21:21.570 に答える
0

それを扱うのは簡単ではないだろうと思うこと。Android のアクティビティは保存できますが、アクティビティ B に移動するときに Android システムを呼び出してそのインスタンスを使用することはできません。

このリンクを読んでくださいhttp://developer.android.com/reference/android/app/Activity.html

それはあなたがそれでできるすべての情報を提供しますが、あなたが望むすべてではありません.

アクティビティ B からアクティビティ A に移動すると、Android 自体がアクティビティ B のインスタンスを一時的にメモリに保存し、そのインスタンスは後で完全に破棄されます。A から B に再度移動すると、アクティビティ B のインスタンスがまだメモリ内に存在する場合は再度再利用されます。それ以外の場合は、アクティビティを再作成します。いずれの場合も、アクティビティ B が再利用または再作成され、メソッド onCreate が常に呼び出されます (onResume ... などのライフサイクルのすべてのメソッド)。その後、アクティビティ B のすべてのデータは、ナビゲートする前の古いデータではない新しいデータになります。アクティビティA.これは、これらのメソッドを呼び出さずにアクティビティBを起動できないようにするためにAndroidシステムが行っていることです。

アクティビティ B をアクティビティ A に移動する前と同じように見せたい場合は、アクティビティ B のメソッド onPause() で必要なデータを保存し、onCreate() を呼び出すときにそれらのデータをアクティビティ B のコンポーネントに戻す必要があります。 . ハニカム (3.0) より前のバージョンの Android OS はそのメソッドを呼び出さないため、この場合はメソッド onSaveInstanceState(Bundle) を使用しないでください。

オンラインデータやリストビュー、ウェブビューなどを扱っていて、自分でデータを保存している場合、これは対処が難しい可能性があり、アプリケーション自体にリスクが生じる可能性があります。

とにかく、これがあなたの助けになることを願っています。

于 2012-04-21T14:24:15.640 に答える