5

我目前正在使用 actionbarsherlock 向后移植我的应用程序以使其在 3.0 之前的设备上运行。

如果用户以纵向模式启动应用程序,然后旋转屏幕并尝试选择选项卡,则在用户执行另一个操作之前不会发生任何事情。可以在此处下载执行此操作的当前版本 (sherlock-alpha1) http://tinyurl.com/cz95nup

标签的添加方式如下

        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.addTab(bar.newTab().setText("tab1").setTabListener(this),false);
        bar.addTab(bar.newTab().setText("tab2").setTabListener(this),false);
        bar.addTab(bar.newTab().setText("tab3").setTabListener(this),false);

如果您以横向启动应用程序然后以纵向模式使用它,也会发生这种情况(纵向选项卡将不起作用)。

它在运行本机操作栏的设备上运行良好。

4

4 回答 4

11

您是否正在处理清单中的配置更改?

android:configChanges="orientation"

如果是这样,这不允许 ActionBarSherlock 安装的虚假装饰视图在旋转时重新初始化,这将导致许多问题。

应尽可能谨慎地使用处理配置更改。文档指出,它应该作为最后的手段使用

希望图书馆的未来版本能够考虑到选择这样做的人。

于 2012-04-09T15:27:20.027 回答
3

对我来说,它在方向更改后没有响应,而不是在横向模式下。经过大量试验和错误后,我找到了以下解决此错误的方法:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
    super.onConfigurationChanged(newConfig);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}

诀窍是将导航模式更改为列表,然后更改回选项卡。

于 2013-12-15T00:52:19.567 回答
1

我找到了解决方法。可能不是一个正确的实现,因为它重新创建了选项卡布局,但它可以工作:)

https://github.com/JakeWharton/ActionBarSherlock/pull/549

于 2012-07-12T09:08:44.013 回答
0

我有同样的问题。我必须添加这些行,在 AVD 上没问题,不知道它是否在真实设备上工作。

<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:anyDensity="true" />
于 2012-04-30T02:30:36.560 回答