Ale*_*lex 0 android android-actionbar-compat
作为我正在开发的应用程序的一部分,我试图获取对ActionBar的容器视图的引用。我使用了这个问题的答案,只要有问题的 Android 设备运行 API 级别 11 或更高级别,它就可以很好地为我工作。但是,该应用程序需要在 API 级别 9(目标 API 级别为 19)之前工作,并且 Gingerbread 设备给我带来了问题。我最初在该项目中使用 Sherlock,但最近改为使用 v7 兼容库。我可以在 Gingerbread 设备(按钮工作等)上以正常方式查看操作栏并与之交互,但是当我尝试获取容器时它失败了。我正在使用的代码是这样的(注意 - 它在 的子类中运行ActionBarActivity):
private FrameLayout getActionBarContainer() {
FrameLayout result = null;
int resId = getResources().getIdentifier("action_bar_container", "id", "android");
try {
result = (FrameLayout)getWindow().getDecorView().findViewById(resId);
}
catch (Exception e) {
// If we get an exception, just eat it
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
在被问到之前先回答几个问题:
ClassCastException设法被抛出(它永远不应该,因为容器是 的子类FrameLayout)。ActionBar引用(以及所有相关的东西,比如ActionBarActivity我正在扩展的超类)都是 v7 兼容库版本,而不是标准库版本。action_bar_containerID 应该存在于 v7 兼容库中,如果有任何指示的话。我在这一点上的想法。我错过了一些简单的东西吗?任何建议将不胜感激,如果您需要更多上下文/说明,请告诉我。
我认为你的错误是在最后一个参数
int resId = getResources().getIdentifier("action_bar_container", "id", "android");
Run Code Online (Sandbox Code Playgroud)
对于 api 级别 <11,包应该是您的应用程序的包,而不是平台的包“android”
| 归档时间: |
|
| 查看次数: |
1063 次 |
| 最近记录: |