ルート 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 回の試行:
- 選択された 0 インデックス、2 または 3 をタップ - onTabChanged() は呼び出されません
- 選択した 0 インデックス、1 をタップ - OK
- 1 つのインデックスを選択し、0 をタップ - OK
- 選択した 0 インデックス、2 または 3 をタップ - OK
2 試行:
- 選択された 0 インデックス、2 をタップ - onTabChanged() は呼び出されません
- 選択された 0 インデックス、2 をタップ - onTabChanged() は呼び出されません
- 選択した 0 インデックス、3 をタップ - OK
- 選択した 3 つのインデックス、2 をタップ - OK
最初のステップで onTabChanged() が呼び出されなかったのはなぜですか?