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 に答える