0

我有一个标签栏,其中 1 个标签在新活动中打开相机。选择此选项卡时,我希望拒绝该选项卡选择,并且希望之前选择的选项卡保持选中状态。

我有一个activeFragment变量,我尝试用它来重新选择以前使用过的选项卡,getSupportActionBar().setSelectedNavigationItem(0); 但这不起作用。我尝试ft.commit()在选择 CAMERA 选项卡时不调用,但这也不起作用。如何拒绝选择此选项卡,或者至少立即重新选择以前选择的选项卡?

非常感谢!

4

1 回答 1

0

当意识到还不允许选择选项卡时,要在 onTabSelected() 中重新选择选项卡,我发现您可以使用以下内容:

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        boolean bOK = true;
        if (tab.getPosition() == 1) {
            if (!checkReadyToChangeTab()) {
                Toast.makeText(activity, "Cannot change tab!", Toast.LENGTH_SHORT).show();
                bOK = false;
                // reselect tab 0
                final Handler handler = new Handler();
                final Runnable runnable = new Runnable() {
                    public void run() {
                        getSupportActionBar().selectTab(getSupportActionBar().getTabAt(0));
                    }
                };
                handler.postDelayed(runnable, 10);
            }
        }
        if (bOK) {
            ft.replace(R.id.fragment_container, fragment);
        }
    }
于 2013-05-13T21:45:41.310 回答