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);


        }

看到其他部分表明意图正在维护我的片段

请查看我在这里为所有片段用户分享的示例(带有 Gridview 的片段),您会从中发现一些有用的东西

在此链接上查看我的答案:如何在片段中显示不同的布局

于 2012-06-13T05:01:26.980 回答
1

您很可能将第一个 Fragment 事务添加到后台堆栈。将事务添加到后台堆栈时,这意味着当用户回击时,最后一个事务将被撤消。因此,如果您添加了 Fragment A 并删除了 Fragment B,则按下返回将删除 Fragment A 并添加 Fragment B(并恢复 Fragment B 的某些已保存状态)。

对于您的第一笔交易,您只是在 Activity 中添加一个 Fragment,因此反向操作将删除 Fragment,因此什么也不显示。所以不要将第一个事务添加到后台堆栈(假设你这样做了......我无法知道,因为你只粘贴了一小段代码)。

于 2012-06-12T18:19:22.393 回答
0

我通常使用 android 示例FragmentTabs来管理选项卡,我还没有遇到过这个问题。如果没有看到完整的源代码,很难确切地说出它发生了什么。但是,如果您不使用FragmentTabs,那么您可以尝试迁移到它,因为它已经过全面测试;)

于 2012-06-06T12:24:04.217 回答