0

我在做我的 Android 应用程序时遇到了障碍。我的问题是我无法为我的选项卡创建 onTabListener。我有三个不同名称的选项卡。问题是它们都有相同的指标。在我的代码中,我运行了这个:

    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            int n = getActionBar().getTabCount();
            Toast.makeText(getApplicationContext(), "You have selected: " + n, Toast.LENGTH_LONG).show();
        }

这使得 toast 表示选项卡的值(例如:0、1、2、3),但所有选项卡都有相同的指示符。如果我的所有选项卡都具有相同的指示器,我将无法创建 onTabListener。这是我的完整代码:

    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            int n = getActionBar().getTabCount();
            Toast.makeText(getApplicationContext(), "You have selected: " + n, Toast.LENGTH_LONG).show();
        }

        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
            // hide the given tab
        }

        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
            // probably ignore this event
        }
    };

    // Add 3 tabs, specifying the tab's text and TabListener
    for (int i = 0; i < 3; i++) {
        actionBar.addTab(
                actionBar.newTab()
                        .setText(tabTitle[i])
                        .setTabListener(tabListener));
    }

问题是什么?有什么方法可以使用标签的标题创建 onTabListener 吗?对此问题的任何帮助将不胜感激。

4

1 回答 1

0

通过设置,此代码完全按照您的要求执行

int n = getActionBar().getTabCount();

您只会打印当前的标签计数。我不确定为什么它会为您打印不同的值,也许在您尝试使用不同标签计数的那些测试中。不管怎样,换行

int n  = getActionBar().getTabCount();

String n = tab.getText().toString();

这将更改为n所选选项卡的名称,因此它会正确附加到下一行的 toast 消息中。

于 2013-06-24T20:26:30.177 回答