我已经实现了ActionBarsherlock的示例com.actionBarsherlock.sample.fragments,所有这些都工作得很好,直到当所选选项卡有子片段时设备方向发生变化。
一切都好:
一切都很好,可以旋转设备没有问题。现在,如果我在Fragment2中选择一个列表项来推入Fragment2Child1,在我旋转设备之前,一切都是好的。
设备旋转时不良:
tab1->Fragment1
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
mTabManager.addTab(mTabHost.newTabSpec("new").setIndicator(getString(R.string.new_)), NewListSupportActivity.NewListFragment.class, null);
mTabManager.addTab(mTabHost.newTabSpec("project").setIndicator(getString(R.string.project)), ProjectSupportActivity.ProjectListFragment.class, null);
mTabManager.addTab(mTabHost.newTabSpec("setting").setIndicator(getString(R.string.settings)), SettingSupportActivity.SettingListFragment.class, null);
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
}
} else {
public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) {
tabSpec.setContent(new DummyTabFactory(this.mActivity));
final String tag = tabSpec.getTag();
final TabInfo info = new TabInfo(tag, clss, args);
// 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.
info.fragment = this.mActivity.getSupportFragmentManager().findFragmentByTag(tag);
if (info.fragment != null && !info.fragment.isDetached()) {
final FragmentTransaction ft = this.mActivity.getSupportFragmentManager().beginTransaction();
ft.detach(info.fragment);
ft.commit();
}
this.mTabs.put(tag, info);
this.mTabHost.addTab(tabSpec);
}
@Override
public void onTabChanged(String tabId) {
TabInfo newTab = mTabs.get(tabId);
if (mLastTab != newTab) {
FragmentTransaction ft = mActivity.getSupportFragmentManager().beginTransaction();
if (mLastTab != null) {
if (mLastTab.fragment != null) {
ft.detach(mLastTab.fragment);
}
}
if (newTab != null) {
if (newTab.fragment == null) {
newTab.fragment = Fragment.instantiate(mActivity, newTab.clss.getName(), newTab.args);
ft.add(mContainerId, newTab.fragment, newTab.tag);
} else {
ft.attach(newTab.fragment);
}
}
mLastTab = newTab;
ft.commit();
mActivity.getSupportFragmentManager().executePendingTransactions();
}
}
以及推送Fragment2Child1或任何子级的代码
public void pushFragment(TradiesFragment current, TradiesFragment fragment) {
fragment.setFragmentListener(this);
final FragmentManager fm = this.fragment.getFragmentManager();
final FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, android.R.anim.slide_in_left, android.R.anim.slide_out_right);
ft.detach(current);
ft.add(this.fragment.getId(), fragment);
ft.addToBackStack(null);
ft.commit();
}
这个问题没有答案。至少我能想到的没有一个不是彻头彻尾的丑陋。解决方案是将Fragment2Child1包装在一个活动中。当导航到fragment2child1activity时,最终会隐藏tab活动。并且用户每次都被迫导航回主活动(带有选项卡)。从好的方面来看,它实际上使UI更加简单。
我有一个应用程序,它使用选项卡进行导航。通过这些选项卡,我在布局中使用和。 我已经在应用程序的主中配置了这些内容。在这里,我为添加了一个页面更改监听器,并更改了关于位置的选项卡。当按下选项卡时,我也会以另一种方式进行操作。这都没问题。 然后我就有了标签中的内容。它们都扩展了类。第一个必须根据设备改变布局。在横向平板电脑()上,我有一个包含两个片段的布局,而其他设备只有一个片段。这是由appiate
视图与所有其他选项卡栏项目(事件、挂起、浏览、我的个人资料)配合良好,但对于“更多”部分,当推送到相关视图控制器时,选项卡栏视图控制器将显示选项卡栏上方的新底部栏,如图所示。 现在我试图设置底部栏为无,试图隐藏底部栏在属性检查员,没有工作。我想帮助删除这个空白视图视为底部栏,显示在标签栏上方。
我正在使用动作栏和带有片段的选项卡导航。 每个选项卡都包含一个带有列表视图的片段X,当单击列表中的一个项目时,片段X被另一个带有项目详细信息的片段取代。 当我在FragmentY中时,如何设置的Up按钮以加载FragmentX? 文档显示导航应该在之间完成,但的导航选项卡允许在之间导航,而不是。 我错过了什么?
因此,我使用ViewPager,使用ActionBar选项卡式活动创建了一个Android应用程序项目。我还创建了两个片段类,并附带了相应的片段布局。当选择相应的选项卡时,我将片段返回到SectionsPagerAdapter。 现在我有一些问题。我的印象是,每次选择一个选项卡时,它都会调用片段类并进入片段的onCreateView,但它只发生一次。 我想要实现的是知道何时选择选项卡,以及相应的片
我有8个标签。由于所有选项卡都应该显示自定义列表,所以我试图添加相同的片段实例。我正在使用OnEventBackGroundThread中的EventBus下载列表,并将其添加到OnEventMainThread中的adapter中。 我可以看到PageSlidingTabStrip下载选定选项卡的数据以及其他两个选项卡(在选定选项卡旁边)的数据。标签标题是准确的。我可以下载每个标签的数据。现在的