0

2つのアクティビティがあります。1つのアクティビティがWebサービスを介して外部データベースに質問し、別のアクティビティの結果を表示します。私が欲しいのは、ハードウェアの戻るキーを押すと最初のアクティビティに戻り、別のリクエストを行うと2番目のアクティビティを最初からやり直すことです。これが私が使用しているonBackPressed()メソッドのコードですが、機能しません!正しい最初のアクティビティに戻りますが、別のリクエストを実行すると、最初に終了した場所から2秒のアクティビティが開始されます。たとえば、2番目のアクティビティの下部にページ番号があり、ページ番号3のハードウェアに戻るボタンを押して別のリクエストを実行すると、2番目のアクティビティがすべてのデータとともにページ3から再開されます。私は何を間違っているのですか。私はAndroidのライフサイクルで何か間違ったことをしていますか(ウェブサービス/ dbへのリクエストを行うためにシングルトンクラスを使用しているように)、シングルトンを使用して間違いを犯していますか?私の間違いは、ライフサイクルの最初のポイントにあると思います。どんな助けでもいただければ幸いです。ありがとう!

@Override
    public void onBackPressed() {
        super.onBackPressed();
        finish();       
        Intent intent = new Intent(this, pluto.class);
        startActivity(intent);
    }
4

3 に答える 3

1

androidのデフォルトのバックプレスは、現在のアクティビティをスタックから削除し、前のアクティビティをonTopにします(これがあなたが探しているものです)。

そもそもオーバーライドしている理由と、アクティビティの新しいインスタンスを作成している理由がわかりませんでした

Intent intent = new Intent(this, pluto.class);     
startActivity(intent)

このメソッドを一緒にコメントして、それが機能するかどうかを確認してください。

編集1

タスクとバックスタックリンク

于 2012-04-05T09:55:32.307 に答える
0

実際には、onBackPressed()メソッドで別のアクティビティを呼び出す前に、現在のアクティビティを終了します。したがって、作業を完了したい場合は、finish()を削除するだけです。メソッドからコマンドを実行し、そのアクティビティのonPause()で呼び出します。

于 2012-04-05T10:28:11.913 に答える
0

押し戻したときにアクティビティ番号2をリセットする方法を探している場合は、onBackPressedメソッドで手動でリセットする必要があります。また、Androidでシングルトンを使用すると、アクティビティが破棄されるタイミングを完全に制御できないため、少し面倒になる可能性があります。本当に使う必要がありますか?Androidは状態保存を自動的に行います。そして、Devastationが言ったように、戻るが押されたときに手動でアクティビティ1を開始する必要はありません。

于 2012-04-05T10:05:39.117 に答える