我在Android 4.0.3上使用ActionBarSherlock,因此可能会使用原生ActionBar。
当我启动我的应用程序时,一切正常。但是,当我进入主屏幕并等待它被杀死(或者只是更改系统字体,然后它立即发生)然后再次通过“上次使用” - 再次切换到应用程序,所有内容都可以顺利重新加载,除了Actionbar现在已经空标签。
所以标签在那里,但是空的(并且不起作用)。 奇怪的是,即使在Application对象中调用了onCreate(如在TabParentActivity中,请参见下面的代码),理论上应该已经完全重新启动了应用程序(而不仅仅是像onResume ...)。
当我杀死我的应用程序(通过任务管理器)并重新打开它时,问题已经消失。
我如何在TabParentActivity中添加Actionbar:
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
答案 0 :(得分:1)
我现在能够自己解决它。 原因真的很疯狂:在上面的代码中,我使用s.displayName在循环中设置选项卡的标签。 s属于名为StolScreen的Enum。
在那里,通过在Tools(之前初始化)中的调用初始化displayName,该调用从xml文件中检索显示名称。当我回到活动时(当时只有那时),实际发生的是,StolScreen被加载(在Enum中,字段像静态成员一样加载)BEFORE工具初始化。
所以只有一个空字符串放在标签上:D。无论如何,thx 4帮助;)