【问题标题】:ActionBarSherlock and pre 3.0 Android devicesActionBarSherlock 和 3.0 之前的 Android 设备
【发布时间】:2012-04-20 13:05:41
【问题描述】:

我正在为 Android 应用程序实现 SherlockActionBar,但我想保持与之前 Honeycomb 设备的向后兼容性。

这是示例代码:

package com.sherlockbar.example;

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.widget.TextView;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockActivity;

public class SherlockExampleActivity extends SherlockActivity implements ActionBar.TabListener {
    private TextView mSelected;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.tab_navigation);
        mSelected = (TextView) findViewById(R.id.text);

        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        for (int i = 1; i <= 3; i++) {
            ActionBar.Tab tab = getSupportActionBar().newTab();
            tab.setText("Tab " + i);
            tab.setTabListener(this);
            getSupportActionBar().addTab(tab);
        }
    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction transaction) {
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction transaction) {
        mSelected.setText("Selected: " + tab.getText());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
    }
}

对于 4.0 设备,这很完美,但对于 Honeycomb,它不起作用 - 我收到以下错误:

E/AndroidRuntime(2363):原因:java.lang.IllegalStateException: 您必须使用 Theme.Sherlock、Theme.Sherlock.Light、 Theme.Sherlock.Light.DarkActionBar 或派生类。

在清单中我试图确定它们,但它不在建议的列表中,而且如果我写它,我仍然会收到错误。

请问如何设置 Honeycomb 设备的标准?

提前非常感谢!

【问题讨论】:

  • 将清单发布在您设置了 Sherlock 主题之一的位置。
  • @CommonsWare 这就是我所拥有的:
  • 您不应该再使用该清单收到该错误。这是一个使用 ActionBarSherlock 的小示例项目:github.com/commonsguy/cw-omnibus/tree/master/ActionBar/… 请注意,您需要将自己的 ABS 副本附加为库项目。
  • 我附上了从网页下载的ABS项目作为库,但还是一样..

标签: android android-3.0-honeycomb android-4.0-ice-cream-sandwich actionbarsherlock


【解决方案1】:

您是否针对 4.0 进行编译?您需要以 Android 4.0 sdk 为目标才能正确编译(即使您在

【讨论】:

  • 是的,这就是我所拥有的:
  • @noloman:这与建议无关。您需要将项目的 build target 设置为 Android 4.0+。例如,在 Eclipse 中,您可以通过 Project > Properties > Android 设置项目的构建目标。
【解决方案2】:

确保您已将 ActionBarSherlock 设置为库项目。在您这样做之前,您的项目将无法访问 ABS 中的资源

【讨论】:

    猜你喜欢
    • 2012-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多