2

タブホストとフラグメントを使用して複数のページを表示しています。現在、タブを押してから戻るボタンを押すと、ユーザーはアプリケーションから抜け出します。それを防ぎたいので、フラグメントのスタックに何もない場合、ユーザーがアプリを離れたいかどうかを尋ねるダイアログが表示されます。私が提供している解決策は、戻るボタンが押されたときに、ダイアログを表示する主要なタブのいずれかである場合、現在どのフラグメントが表示されているかを確認することです。それはうまくいきますが、戻るボタンが押されたときに、他に表示するものがない場合にのみダイアログを表示したいと思います。例を使って自分自身をよりよく説明しようとします:

タブ A、B、C、D があるとします。

各タブには、そのコンテンツを示すフラグメントがあります: Fragment_A、Fragment_B、Fragment_C、Fragment_D。

Fragment_A から、Fragment_C、Fragment_W、Fragment_Z に移動できます。

今、fragment_A にいて、Fragment_C に移動するボタンを押したとします。私のスタックには、fragment_A、fragment_C があります。fragment_C は主要なタブであるため、[戻る] ボタンを押すと、ソリューションにダイアログが表示されます。しかし、私はこの動作を望まないので、fragment_A に戻りたいと思っています。そして、ユーザーがもう一度戻るボタンを押すと、スタックに他に何もないため、ダイアログを表示したいと思います。

これは私が持っているものです:

@Override
public void onBackPressed() { 

    Fragment currentFragment = this.getSupportFragmentManager().findFragmentById(android.R.id.tabcontent);

    String fragmentTag = currentFragment.getTag().toString();


    if (fragmentTag.equals(tagFragmentClients) || fragmentTag.equals(tagFragmentTasks) || fragmentTag.equals(tagFragmentSettings) || fragmentTag.equals(tagFragmentLogout)){

        showDialog();

    }
}

どんな助けでも大歓迎です。

4

1 に答える 1

4

これは通常の Android の動作ではありませんが、FragmentManager getBackStackEntryCount()メソッドを使用してバックスタックのサイズを決定でき、それが 0 の場合は警告ダイアログを表示できると思います。

于 2013-07-06T17:14:56.583 に答える