我已经阅读了很多关于碎片问题的stackoverflow,但我找不到解决我的问题的方法。
我有一个 Tabhost,当我更改设备的旋转然后选择另一个选项卡时,第一个选项卡的视图也可见。所以两个选项卡的内容都在彼此之上。
我正在使用自定义 tablistener,每个选项卡都是一个片段。我可以绕过这个,android:configChanges="keyboardHidden|orientation|screenSize"
但是这个解决方案给了我一个其他问题的列表,我读到这是一个糟糕的解决方案。
public class TabListener<T extends Fragment> implements ActionBar.TabListener {
private Fragment fragment;
private final FragmentActivity activity;
private final String tag;
private final Class<T> myClass;
private long id;
public TabListener(FragmentActivity a, String t, Class<T> c, long id) {
tag = t;
myClass = c;
activity = a;
this.id = id;
}
/** The following are each of the ActionBar.TabListener callbacks */
public void onTabSelected(Tab tab, FragmentTransaction ft) {
// Check if the fragment is already initialized
if (fragment == null) {
fragment = Fragment.instantiate(activity, myClass.getName());
// Sends stored TimerClass id to fragment
if(id != 0) {
Bundle b = new Bundle();
b.putLong("id", id);
fragment.setArguments(b);
}
ft.add(android.R.id.content, fragment, tag);
} else { // If it exists, simply attach it in order to show it
ft.attach(fragment);
}
}
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
if (fragment != null)
ft.detach(fragment);
}
public void onTabReselected(Tab tab, FragmentTransaction ft) {
editNameDialog();
}
}
我不知道这应该在片段、活动或 TabListener 中处理。在我更改屏幕方向之前,可以正确查看选项卡内容。