1

我正在为 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 设备的标准?

提前非常感谢!

4

2 回答 2

3

Are you compiling against 4.0? You need to target the Android 4.0 sdk in order for it to compile correctly (even if you're running on < 4.0).

于 2012-04-20T13:41:56.940 回答
1

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

于 2012-04-20T13:19:04.147 回答