1

ルート tabWidget とフラグメントの 1 つ - 子 tabWidget があります。

フラグメントクラスは次のとおりです。

public class TopFragment extends Fragment implements TabHost.OnTabChangeListener{
    private TabWidget mTabs;

tabhost のセットアップと onCreateView() でのリスナーの設定:

@Override 
public View onCreateView(...
...
    mTabs = (TabWidget)  view.findViewById(android.R.id.tabs);
    mTabHost = (TabHost) view.findViewById(R.id.tabhost_top);
    mTabHost.setOnTabChangedListener(this);
    mTabHost.setup();

クラスオーバーライド onTabChange メソッドで:

@Override public void onTabChanged(final String tabId) {

現在のフラグメントが選択されているように設定されている場合:

@Override public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    if (isVisibleToUser == true) { 
        mTabs.setCurrentTab(0);
        ...
    }

問題:

フラグメントが表示されるように設定されている場合 (タブをタップ) - 子 tabWidget で選択されたアイテム インデックスは 0 です。

1 回の試行:

  1. 選択された 0 インデックス、2 または 3 をタップ - onTabChanged() は呼び出されません
  2. 選択した 0 インデックス、1 をタップ - OK
  3. 1 つのインデックスを選択し、0 をタップ - OK
  4. 選択した 0 インデックス、2 または 3 をタップ - OK

2 試行:

  1. 選択された 0 インデックス、2 をタップ - onTabChanged() は呼び出されません
  2. 選択された 0 インデックス、2 をタップ - onTabChanged() は呼び出されません
  3. 選択した 0 インデックス、3 をタップ - OK
  4. 選択した 3 つのインデックス、2 をタップ - OK

最初のステップで onTabChanged() が呼び出されなかったのはなぜですか?

4

0 に答える 0