77

アプリのボタンを押すと、最後のアクティビティに戻る必要があります。

何か案は?

4

5 に答える 5

97

finish()終了したいアクティビティからの呼び出しは、これに対処する必要があります。

何年も後に編集する:これはまだ機能しますが、少し手間のかかるアプローチです。私が最初にこれを投稿したとき、Fragments存在しませんでした、そして(いくつかのコメント者が指摘したように)これはFragments関係しているときはまったく同じようには機能しません。あなたが使用している場合、今より良いアプローチがありますFragments.

于 2010-04-27T00:33:58.843 に答える
82

記録のために:説明されているメソッドは、場合によっては戻るボタンと同じようには機能しませんが、呼び出すことができます

this.onBackPressed();

また

getActivity().onBackPressed();

あなたがexacltyを達成するために断片にいるなら、同じ振る舞いをします。

于 2014-04-15T12:33:35.980 に答える
40

フラグメントを使用する場合:

getFragmentManager().popBackStack();

また

getSupportFragmentManager().popBackStack();

android.support.v4.appパッケージを使用している場合

于 2013-05-09T19:07:07.450 に答える
2

これは、同じフラグメントがアクティビティ内の唯一のフラグメントである場合や、2つのフラグメントが同時に表示されるタブレットなど、マルチフラグメントアクティビティの一部である場合がある場合に使用します。

/**
 * Method that can be used by a fragment that has been started by MainFragment to terminate
 * itself. There is some controversy as to whether a fragment should remove itself from the back
 * stack, or if that is a violation of the Android design specs for fragments. See here:
 * http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish
 */
public static void fragmentImplementCancel(Fragment fragment) {

    FragmentActivity fragmentActivity = fragment.getActivity();
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();

    if (fragmentManager.getBackStackEntryCount() == 1) {
        fragmentManager.popBackStack();
    }
    else {
        fragmentActivity.finish();
    }
}

このコードは、たとえば、[キャンセル]ボタンを実装するために呼び出すことができます。

    if (theButton.getId() == R.id.btnStatusCancel) {
        StaticMethods.fragmentImplementCancel(this);
    }
于 2014-02-03T11:23:55.280 に答える
-1

戻るボタンを押すと、上ボタンの呼び出しを偽装できます。

@Override
public void onBackPressed() {
    onNavigateUp();
}
于 2014-11-23T19:48:29.230 に答える