15

私はこの投稿を見ましたが、ここに投稿された解決策は私にとってはうまくいきません:バックスタックで最新のフラグメントを取得してください

フラグメントを別のフラグメントに置き換えるときは、次を使用します。

FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction ft = manager.beginTransaction();

    ft.replace(android.R.id.tabcontent, fragment, tag);
    ft.addToBackStack(null);

    ft.commit();

したがって、フラグメントを検出するためにタグを使用していることに注意してください。

特に私の問題は次のとおりです。

fragment_A、fragment_B、fragment_C があるとします。私はfragment_Aまたはfragment_Bからfragment_Cに到達でき、呼び出しの親に応じて、特定のことをしなければなりません。そのため、バック スタックの最後の FRAGMENT を回復する必要があります。

私がやろうとすると:

FragmentManager fm = getSupportFragmentManager();

        for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
            String ide = fm.getBackStackEntryAt(entry).getName();
           Log.i("TAG", "Found fragment: " + ide);
        }

私はヌルを取得します。代わりに getId() を使用すると、数字が得られるので、次のことを試しました。

int id = fm.getBackStackEntryAt(entry).getId();
Fragment fragment = fm.findFragmentById(id);
Log.i("TAG", "Found fragment: " + fragment.getTag());

しかし、私はnullを取得します..他に何をすべきかわからないので、どんな助けでも大歓迎です。

編集: onBackPressed() { ...} でこのメソッドを呼び出します

4

1 に答える 1

16

を使用している場合は、次BackStackEntry.getName()のようになります。

ft.replace(android.R.id.tabcontent, fragment, tag);
ft.addToBackStack(tag);
于 2013-07-10T04:12:31.463 に答える