【发布时间】: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