-1

私はアンドロイドが初めてです。タブバーコントロールを実装するために「FragmentActivity」を使用しています。あるフラグメントから別のフラグメントをプッシュすると、問題に直面しています。タブを変更したり、前のフラグメントに戻ろうとすると、動作がおかしくなります。スタックを適切に管理するための堅実なコードを提供できる人はいますか。

4

1 に答える 1

1

フラグメント間の遷移用

Fragment frag;
FragmentTransaction transaction;
frag = new Fragment1();

transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.detailFragment, frag);
transaction.commit();

onKeyDown メソッドをオーバーライドし、戻るボタンが押されるたびに現在のフラグメントを削除します。

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode == KeyEvent.KEYCODE_BACK)
        {
            if (getSupportFragmentManager().getBackStackEntryCount() == 0)
            {
                this.finish();
                return false;
            }
            else
            {
                getSupportFragmentManager().popBackStack();
                removeCurrentFragment();

                return false;
            }



        }

        return super.onKeyDown(keyCode, event);
    }


    public void removeCurrentFragment()
    {
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        Fragment currentFrag =  getSupportFragmentManager().findFragmentById(R.id.detailFragment);


        String fragName = "NONE";

        if (currentFrag!=null)
            fragName = currentFrag.getClass().getSimpleName();


        if (currentFrag != null)
            transaction.remove(currentFrag);

        transaction.commit();

    }
于 2013-03-25T08:00:29.883 に答える