2

我有一个带有 3 个选项卡和一个按钮的示例。

public class MainActivity extends SherlockActivity implements TabListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    setContentView(R.layout.activity_main);
    addTab("1", 0, false);
    addTab("2", 1, false);
    addTab("3", 2, false);
    Button cmdClick = (Button) findViewById(R.id.cmdClick);
    cmdClick.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            getSupportActionBar().setSelectedNavigationItem(0);             
        }
    });

}

private void addTab(String tabTitle, int position, boolean setSelected) {
    ActionBar.Tab tab = getSupportActionBar().newTab();
    tab.setText(tabTitle);
    tab.setTabListener(this);
    getSupportActionBar().addTab(tab, position, setSelected);
}

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Log.d("example", "Selected " + tab.getPosition());
}

@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
    Log.d("example", "Unselected " + tab.getPosition());
}

@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
    Log.d("example", "Reselected " + tab.getPosition());
}

}

当我单击按钮时,它会自动选择第一个选项卡。每当我单击第二个或第三个选项卡时,我想自动选择第一个选项卡。我试过这样

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    Log.d("example", "Selected " + tab.getPosition());
    getSupportActionBar().setSelectedNavigationItem(0);
}

但它不起作用。有任何想法吗?

谢谢。

编辑:

也许这个例子没有任何意义,但这只是我正在尝试做的一个简化例子。我希望默认有 2 个标签,一个标题为“1”,第二个标题为“+”。当用户选择“+”选项卡时,我想创建标题为“2”的新选项卡(在选项卡“1”和“+”之间)并自动选择选项卡“2”。

4

1 回答 1

0

首先,我想劝阻这种行为。这会让您的用户感到非常困惑,坦率地说没有任何意义。

也就是说,我尝试破解它,但它似乎并不那么容易做到。我做了以下工作:

public void onTabSelected(Tab tab, FragmentTransaction ft) {
            if(tab.getPosition() == 0) {
                int tabs = mActivity.getSupportActionBar().getTabCount();
                if(tabs > 3) {
                    ActionBar.Tab test = mActivity.getSupportActionBar().getTabAt(2);
                    test.select();
                    return;
                }
            }

编辑:

对于您描述的行为,我认为通过创建自己的选项卡来实现它会容易得多。您可以使用单选按钮和/或按钮轻松实现它。

现在这会导致选项卡指示器仍然指向旧选项卡,但里面的片段更新为选定的一个 =/ 所以不完全在那里......

于 2012-11-11T09:56:42.180 回答