我在Android 4.0.3上使用ActionBarSherlock,因此它可能使用本机ActionBar。
当我启动应用程序时,一切正常。但是,当我进入主屏幕并等待其被杀死(或只是更改系统字体,然后立即发生),然后再次通过“上次使用”对话框切换到该应用程序时,一切都会顺利重新加载,除了操作栏现在空标签。
因此选项卡在那里,但为空(并且不起作用)。
奇怪的是,即使在Application对象中也调用了onCreate(例如在TabParentActivity中,请参见下面的代码),因此从理论上讲,Application应该已经完全重新启动(而不仅仅是像onResume ...那样部分重启)。
当我然后(通过任务管理器)杀死我的应用并重新打开它时,问题就消失了。
我如何在TabParentActivity中添加操作栏:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_parent);
//Global initialization
...
ActionBar ab = getSupportActionBar();
// set defaults for logo & home up
ab.setDisplayShowHomeEnabled(true);
ab.setDisplayShowTitleEnabled(false);
ab.setDisplayHomeAsUpEnabled(false);
ab.setDisplayUseLogoEnabled(true);
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
...
for(StolScreen s: screensInTabs){
Tab t = mAb.newTab().setText(s.displayName);
t.setTabListener(new NormalTabListener(this.mActivity, s));
mAb.addTab(t);
}
}
看起来如何:
All ok
Now tabs empty
最佳答案
我现在可以自己解决它。
原因确实很疯狂:在上面的代码中,我使用s.displayName在循环中设置了标签的标签。 s属于一个名为StolScreen的枚举。
在那里,通过在Tools(之前已初始化)中的调用来初始化displayName,该调用从xml文件中检索显示名称。当我返回活动时(直到那时),现在实际发生的事情是在初始化工具之前已加载StolScreen(在Enum中,字段像静态成员一样被加载)。
因此,仅在选项卡:D上放置了一个空字符串。无论如何,thx 4 help;)