2

3つのタブと1つのボタンの例があります。

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

}

ボタンをクリックすると、最初のタブが自動的に選択されます。2番目または3番目のタブをクリックするたびに、最初のタブを自動的に選択したいと思います。私はこのように試しました

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

しかし、それは機能しません。何か案は?

ありがとう。

編集:

この例には意味がないかもしれませんが、これは私がやろうとしていることの単純化された例にすぎません。デフォルトで2つのタブが必要です。1つはタイトル「1」、もう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 に答える