Android操作栏选项卡与片段视图重叠
我的标签:Android操作栏选项卡与片段视图重叠,android,tabs,android-fragments,android-fragmentactivity,fragmenttransaction,Android,Tabs,Android Fragments,Android Fragmentactivity,Fragmenttransaction,我的标签: 私有void tabSherlock(){ actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡) 从细节片段,如果我点击另一个选项卡,视图就会重叠 有人能帮我吗 提前谢谢 ActionBar.Tab tab1 = actionBar.newTab(); tab1.setText("Home"); tab1.setTabListener(new TabListener<HomeFragm
私有void tabSherlock(){ actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u选项卡) 从细节片段,如果我点击另一个选项卡,视图就会重叠 有人能帮我吗 提前谢谢
ActionBar.Tab tab1 = actionBar.newTab();
tab1.setText("Home");
tab1.setTabListener(new TabListener<HomeFragment>(this, "Home",
HomeFragment.class));
actionBar.addTab(tab1);
ActionBar.Tab tab4 = actionBar.newTab();
tab4.setText("Tab4");
tab4.setTabListener(new TabListener<BuzzFragment>(this, "Tab4",
BuzzFragment.class));
actionBar.addTab(tab4);
}
public class TabListener<T extends Fragment> implements
ActionBar.TabListener {
private Fragment mFragment;
private final SherlockFragmentActivity mActivity;
private final String mTag;
private final Class<T> mClass;
/**
* Constructor used each time a new tab is created.
*
* @param activity
* The host Activity, used to instantiate the fragment
* @param tag
* The identifier tag for the fragment
* @param clz
* The fragment's Class, used to instantiate the fragment
*/
public TabListener(SherlockFragmentActivity activity, String tag,
Class<T> clz) {
mActivity = activity;
mTag = tag;
mClass = clz;
android.support.v4.app.FragmentTransaction ft = mActivity
.getSupportFragmentManager().beginTransaction();
// Check to see if we already have a fragment for this tab, probably
// from a previously saved state. If so, deactivate it, because our
// initial state is that a tab isn't shown.
mFragment = mActivity.getSupportFragmentManager()
.findFragmentByTag(mTag);
if (mFragment != null && !mFragment.isDetached()) {
ft.detach(mFragment);
}
}
/* The following are each of the ActionBar.TabListener callbacks */
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// User selected the already selected tab. Usually do nothing.
Log.d(TAG, "onTabReselected");
}
@Override
public void onTabSelected(com.actionbarsherlock.app.ActionBar.Tab tab,
android.support.v4.app.FragmentTransaction ft) {
Log.d(TAG, "onTabSelected");
Fragment preInitializedFragment = mActivity
.getSupportFragmentManager().findFragmentByTag(mTag);
if (preInitializedFragment == null) {
mFragment = SherlockFragment.instantiate(mActivity,
mClass.getName());
ft.add(android.R.id.content, mFragment, mTag);
// ft.commit();
} else {
ft.attach(preInitializedFragment);
// ft.commit();
}
// ft = mActivity.getSupportFragmentManager().beginTransaction();
//
// if (mFragment == null) {
// mFragment = Fragment.instantiate(mActivity, mClass.getName());
// ft.add(android.R.id.content, mFragment, mTag);
// ft.commit();
// } else {
// ft.attach(mFragment);
// ft.commit();
// }
}
@Override
public void onTabUnselected(
com.actionbarsherlock.app.ActionBar.Tab tab,
android.support.v4.app.FragmentTransaction ft) {
Log.d(TAG, "onTabUnselected");
Fragment preInitializedFragment = mActivity
.getSupportFragmentManager().findFragmentByTag(mTag);
if (preInitializedFragment != null) {
ft.detach(preInitializedFragment);
// ft.commit();
} else if (mFragment != null) {
ft.detach(mFragment);
// ft.commit();
}
// ft = mActivity.getSupportFragmentManager().beginTransaction();
//
// if (mFragment != null) {
// ft.detach(mFragment);
// ft.commitAllowingStateLoss();
// }
}
@Override
public void onTabReselected(
com.actionbarsherlock.app.ActionBar.Tab tab,
android.support.v4.app.FragmentTransaction ft) {
Log.d(TAG, "onTabReselected");
}
}
// FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
// fragmentTransaction.addToBackStack(name)
android.support.v4.app.FragmentTransaction transaction =
getSupportFragmentManager()
.beginTransaction();
// Replace whatever is in the fragment_container view with this
// fragment,
// and add the transaction to the back stack so the user can
// navigate back
// transaction.replace(android.R.id.content, newFragment);
transaction.replace(android.R.id.content, newFragment, "Place");
transaction.addToBackStack("Place");
// Commit the transaction
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
}