我正在为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设备的标签?
提前多多感谢!
答案 0 :(得分:3)
你在编译4.0吗?您需要定位Android 4.0 sdk才能正确编译(即使您运行的是&lt; 4.0)。
答案 1 :(得分:1)
确保已将ActionBarSherlock设置为库项目。在您这样做之前,您的项目将无法访问ABS中的资源