回到Activity时,ActionBar恢复为空

时间:2012-08-31 08:15:36

标签: android android-activity android-actionbar actionbarsherlock

我在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

1 个答案:

答案 0 :(得分:1)

我现在能够自己解决它。 原因真的很疯狂:在上面的代码中,我使用s.displayName在循环中设置选项卡的标签。 s属于名为StolScreen的Enum。

在那里,通过在Tools(之前初始化)中的调用初始化displayName,该调用从xml文件中检索显示名称。当我回到活动时(当时只有那时),实际发生的是,StolScreen被加载(在Enum中,字段像静态成员一样加载)BEFORE工具初始化。

所以只有一个空字符串放在标签上:D。无论如何,thx 4帮助;)