StackOverflow でこれらのメッセージを大量に見つけました。他の多くの人と同じように、タブを切り替えるときにタブの内容が重なるという同じ問題があります。私が見つけたアドバイスはどれも、私の問題ではうまくいきませんでした。
アプリを起動すると、最初のタブの内容が正しく表示されます。別のタブをクリックすると、古いコンテンツが画面に残り、別のタブのコンテンツも画面に追加されます。2 回目にタブを切り替えると、すべてのコンテンツが消えます。タブを切り替えても何も起こりません。
Google の Developer document hereに従いました。
私のアプリケーションにはこのonCreate
メソッドがあります。クラスはActionBarActivity
サポート ライブラリから拡張されandroid.support.v7.app
ます。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.setDisplayShowTitleEnabled(false);
Tab tab = actionBar.newTab().setText("TAB1").setTabListener(new TabListener<Tab1Class>(this, "tab1", Tab1Class.class));
actionBar.addTab(tab);
tab = actionBar.newTab().setText("TAB2").setTabListener(new TabListener<Tab2Class>(this, "tab2", Tab2Class.class));
actionBar.addTab(tab);
}
私TabListener
のクラスは、リンクしたページからコピーされます。
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment mFragment;
private final Activity mActivity;
private final String mTag;
private final Class<T> mClass;
public TabListener(Activity activity, String tag, Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
if(mFragment == null) {
mFragment = Fragment.instantiate(mActivity, mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
} else {
ft.attach(mFragment);
}
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if(mFragment != null) {
ft.detach(mFragment);
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {}
}
タブのコンテンツとして使用する両方のクラスは、Fragment from を拡張しますandroid.support.v4.app.Fragment
。メソッドでレイアウトを膨らませますonCreateView
。
どうしたの?