1

Aという名前のアクティビティがあり、これにはListViewと1つのボタンがあります。このボタンをクリックすると、リストビューが表示され、このリストビューからアイテムをクリックすると、アクティビティBに移動できます.

問題は、アクティビティ B -> アクティビティ A から戻ったときに、リスト ビューではなくボタンのみが表示されることです。

アクティビティAのインテントを呼び出しているため..

コード

@Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        Intent i;

            i = new Intent(B.this, A.class);

        startActivity(i);
        finish();
        super.onBackPressed();
    }

アクティビティ B では、上記の実装があり、On Pause() 条件でも finish() を使用しています。

ボタン付きのリストビューを表示したい。ListView を表示するには、コード全体をもう一度呼び出す必要がありますか、それともこの問題を解決する他の方法はありますか? 以前のアクティビティ ビューを保存する方法はありますか?

4

4 に答える 4

0

u hvがfinishメソッドを呼び出したので、アクティビティを再度作成しています。戻ると、onCreateが呼び出され、ライフサイクルのonResumeメソッドが呼び出されます。

于 2013-10-15T05:27:43.297 に答える
0

コードから .rmove finish() を実行するだけです

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    Intent i;

        i = new Intent(B.this, A.class);

    startActivity(i);
    super.onBackPressed();
}
于 2013-10-15T05:28:56.130 に答える
0

Activity Aに切り替える前に終了しているためですActivity B。そのままの状態が必要な場合ListViewは、終了せずActivity Aに試してください。onResume()それでもデータが表示されない場合は、アクティビティ Aでリストビューを再度バインドします。

//removed finish().
@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    Intent i = new Intent(B.this, A.class);
    startActivity(i);
    super.onBackPressed();
}
于 2013-10-15T05:29:46.227 に答える
0

onResume は、アクティビティの開始時、またはアクティビティのライフサイクルに従って別のアクティビティから戻ったときに呼び出されます。コードを onResume 内に保持することをお勧めします。これにより、リストビューにデータが補充されます。

SOからAからアクティビティBを呼び出したとき(アクティビティAでonResumeメソッド内のリストビューを埋めます)、押し戻すと、onResumeが再度呼び出されてリストビューが埋められます。

代わりに、アクティビティ B の onBackPressed 内でコードを実行します。

于 2013-10-15T05:39:20.217 に答える