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

08-06 06:42