【问题标题】:disabling tab navigation through action bar if tab validation fails如果选项卡验证失败,则通过操作栏禁用选项卡导航
【发布时间】:2015-07-29 08:26:46
【问题描述】:

我正在运行一个带有 3 个选项卡的应用程序,这些选项卡支持滑动和操作栏以进行选项卡导航。我设置了一个验证检查,以便在选择选项卡 2 时,如果不满足某些要求,它会返回到选项卡 1。 它适用于滑动(如果从 tab1 滑动到 tab2,它会显示错误消息并返回到 tab 1)但是对于操作栏,如果为 tab2 按下操作栏按钮,则会显示错误消息并显示 tab1 的视图,但是操作栏按钮保留在选项卡 2 上。

我尝试了以下脚本,但没有成功将活动选项卡按钮更改回第一个选项卡。 This is especially a problem since data is supposed to be saved to sqlite when whenever a new tab is selected.

 public void onTabSelected(Tab tab, FragmentTransaction ft) {

    check = GlobalApp.data().value;

    if(tab.getTag() == "Product")
    {
        if(check == "Select Client")
        {

            actionBar.setSelectedNavigationItem(0);
            viewPager.setCurrentItem(0);
            alert.showAlertDialog(Invoice2.this,
                    "Error",
                    "Client name not selected", true);


        }
        else
        {
            viewPager.setCurrentItem(tab.getPosition());
        }
    }
    else if ((tab.getTag() == "Confirm"))
    {
        viewPager.setCurrentItem(tab.getPosition());
    }

【问题讨论】:

    标签: android tabs


    【解决方案1】:

    首先将标签绑定到ViewPager:

    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
            public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
                viewPager.setCurrentItem(tab.getPosition());
                //Do the criteria check here; AFTER setting current item.
            }
    

    然后Viewpager 到标签页:

    viewPager.setOnPageChangeListener(
            new ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    getActionBar().setSelectedNavigationItem(position);
                    //Do the criteria check here; AFTER setting current item.
                }
            });
    

    之后,您可以在注释行之后检查您的条件。无论您更改选项卡或页面,您的选项卡和页面都应该同步更改。欲了解更多信息,请查看此Android Developers training page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2013-04-20
      • 1970-01-01
      相关资源
      最近更新 更多