【问题标题】:Android: findViewById for a Button returns null on Android 2.3 in ActionBarSherlock projectAndroid:按钮的 findViewById 在 ActionBarSherlock 项目中的 Android 2.3 上返回 null
【发布时间】:2013-05-13 23:30:04
【问题描述】:

我正在开发目标为 4.2.2 但最低支持版本为 2.3 的 Android 项目。该项目大量使用 ActionBarSherlock 库。在我写的清单文件中:

 android:theme="@style/Theme.Sherlock" >

当我在 Android 4.2.2 设备和 Android 4.0 上测试我的项目时,一切正常,但是当我尝试在 Android 2.3 上运行该应用程序时,它崩溃并显示下一个日志:

在调试过程中,我注意到我的自定义 ActionBar (custom_bar) 上的一些按钮为空。我使用此代码来创建自定义 ActionBar:

 ActionBar theBar = getSupportActionBar();
    theBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    theBar.setCustomView(R.layout.custom_bar);

那么如何解决这个问题?ActionBarSherlock 库的某些功能是否与 2.3 兼容?

【问题讨论】:

  • 在该 Activity 的 onCreate 上发布您的整个清单。

标签: java android actionbarsherlock android-2.3-gingerbread


【解决方案1】:

来自doc

主题应该在你的清单中定义为整个 应用程序或基于每个活动。您还可以定义主题 在调用 super.onCreate(Bundle) 之前,在每个活动的代码中。 必须为您从其中一项扩展的每项活动执行此操作 'Sherlock' 活动基类并打算使用操作栏。 有关如何指定主题的更多信息,请参见 Android 官方文档。

您是否在 onCreate 方法中指定了这一点?

@Override
public void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.Theme_Sherlock);
    super.onCreate(savedInstanceState);
   //other stuff here
}

【讨论】:

  • 谢谢你!你真的帮助了我。我忘了在 onCreate() 中指定它
【解决方案2】:

从日志中明确,您必须使用 Sherlock 在您的清单文件

中指定它们集,如Theme.Sherloclk.Light

希望对你有帮助

【讨论】:

  • 你读过我的评论了吗??在我的清单文件中,我写了 style/Theme.Sherlock 但错误还是一样!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
相关资源
最近更新 更多