6

Android サンプルFragmentTabsを使用しています。

たとえば、4 つのタブ (A、B、C、D) があるとします。このコードを使用して、タブフラグメント(A)を別の(E)に置き換えます

FragmentTransaction transaction = getFragmentManager()
                .beginTransaction();

        transaction.replace(R.id.realtabcontent, newFragment);
        transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        transaction.addToBackStack(null);

        // Commit the transaction
        transaction.commit();

別のタブ C で、戻るボタンを押すと、タブ (A) の画面が黒くなります。

4

3 に答える 3

2

こんにちは Ashish この問題が発生しているのは、その時点で戻るキーを押すとフラグメントが通常のアクティビティで通常のバック アクティビティのように理解できないためです。最近使用したアクティビティは自動的に開きますが、フラグメントでは戻るボタンを押しても発生しません。したがって、維持する必要があります。ここでフラグメントのバックイベントを私はフラグメントアクティビティを処理しているコードを共有しているので、これを確認できるかもしれません

public void onListItemClick(ListView l, View v, int position, long id) {
        showDetail(position);

    }

    void showDetail(int position) {
        this.position=position;
        if(isDualPane){
            getListView().setItemChecked(position, true);
            DetailFragment detailFragment = (DetailFragment)
                    getFragmentManager().findFragmentById(R.id.detail);

            if (detailFragment == null || detailFragment.getIndex() != position ) {
                detailFragment = new DetailFragment(position);
                FragmentTransaction ft =getFragmentManager().beginTransaction();
                ft.replace(R.id.detail, detailFragment);
                ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                ft.commit();
            }

        }
        else {
            Intent intent =new Intent();
            intent.setClass(getActivity(),DetailActivity.class);
            intent.putExtra("position", position);
            startActivity(intent);


        }

else 部分が、意図がフラグメントを維持していることを示していることを確認してください

私の例 (Fragment With Gridview) をチェックしてください。これは、すべてのフラグメント ユーザーのためにここで共有しています。

このリンクで私の答えを確認してください:フラグメント内に異なるレイアウトを表示する方法

于 2012-06-13T05:01:26.980 に答える
1

ほとんどの場合、最初のフラグメント トランザクションをバック スタックに追加しています。バックスタックにトランザクションを追加すると、ユーザーがヒットバックすると、最後のトランザクションが取り消されます。したがって、フラグメント A を追加してフラグメント B を削除した場合、[戻る] を押すと、フラグメント A が削除され、フラグメント B が追加されます (そして、フラグメント B の保存された状態が復元されます)。

最初のトランザクションでは、フラグメントをアクティビティに追加するだけなので、逆にするとフラグメントが削除され、何も表示されません。したがって、最初のトランザクションをバックスタックに追加しないでください (あなたがそれを行ったと仮定します...コードの小さなスニペットを貼り付けただけなので、私にはわかりません)。

于 2012-06-12T18:19:22.393 に答える
0

私は通常、タブの管理に Android サンプルのFragmentTabsを使用していますが、この問題は経験していません。完全なソース コードを見ないと、何が起こっているのかを正確に知ることは困難です。ただし、 を使用していない場合はFragmentTabs、完全にテストされているため、移行を試みることができます ;)

于 2012-06-06T12:24:04.217 に答える