如果 API 为 11 或更高,如何检查设备的 API 级别并使用 Actionbar?
How to check API level of device and use Actionbar if API is 11 or higher?
我的应用程序使用 Actionbar 设置标题和显示副标题,它会根据用户交互不断变化,我也在使用 splitActionBarWhenNarrow
并在 actionbar 中显示菜单选项。
我希望我的应用支持旧版本 android 的设备(低于 API 11),为此我必须设置 android:minSdkVersion="8"
,但是当我设置最低 sdk 版本时低于 11 我在操作栏上收到错误 (Call requires API level 11 (current min is 8): android.app.Activity#getActionBar
):
getActionBar().setTitle(record_name);
getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
我试图通过添加一个 if 条件来检查 API 的版本来解决这个问题:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if(currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB)
{
//Use Actionbar to set title and subtitle etc.
getActionBar().setTitle(record_name);
getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
getActionBar().setIcon(R.drawable.ic_header);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
else
{
}
但是它不起作用,我仍然在 getActionBar()...
上出错
如果 API 是 <11,我能做些什么来解决这个问题并避免使用操作栏,如果 API 是 >=11 则使用操作栏?
使用支持库和getSupportActionBar()
。这样,每个 API 级别都有 ActinBar。 Google Android 支持库 v4 以获取更多信息。
int currentApiVersion = android.os.Build.VERSION.SDK_INT;
获取当前 api 版本。
ActionBar actionBar = getActionBar(); //from API level 11
如果是 null
你手边没有操作栏。
您也可以使用getSupportActionBar()
参考:
Retrieving Android API version programmatically
http://developer.android.com/reference/android/app/Activity.html#getActionBar%28%29
所以我会这样做:
if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar(); //or SupportActionbar
if (actionBar != null) {
//Use Actionbar to set title and subtitle etc.
actionBar.setTitle(record_name);
actionBar.setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
actionBar.setIcon(R.drawable.ic_header);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
要删除此警告,您需要告诉 IDE 您知道您使用的 methods/fileds/classes 可用,因为 SDK 比您支持的最低版本更新。这是通过 @TargetApi
注释完成的。在您的情况下 @TargetApi(Build.VERSION_CODES.HONEYCOMB)
注释方法或整个 class.
重要提示:这只会删除警告,您仍然必须确保这些方法不会在它们所在的设备上被调用不存在。
我的应用程序使用 Actionbar 设置标题和显示副标题,它会根据用户交互不断变化,我也在使用 splitActionBarWhenNarrow
并在 actionbar 中显示菜单选项。
我希望我的应用支持旧版本 android 的设备(低于 API 11),为此我必须设置 android:minSdkVersion="8"
,但是当我设置最低 sdk 版本时低于 11 我在操作栏上收到错误 (Call requires API level 11 (current min is 8): android.app.Activity#getActionBar
):
getActionBar().setTitle(record_name);
getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
我试图通过添加一个 if 条件来检查 API 的版本来解决这个问题:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if(currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB)
{
//Use Actionbar to set title and subtitle etc.
getActionBar().setTitle(record_name);
getActionBar().setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
getActionBar().setIcon(R.drawable.ic_header);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
else
{
}
但是它不起作用,我仍然在 getActionBar()...
如果 API 是 <11,我能做些什么来解决这个问题并避免使用操作栏,如果 API 是 >=11 则使用操作栏?
使用支持库和getSupportActionBar()
。这样,每个 API 级别都有 ActinBar。 Google Android 支持库 v4 以获取更多信息。
int currentApiVersion = android.os.Build.VERSION.SDK_INT;
获取当前 api 版本。
ActionBar actionBar = getActionBar(); //from API level 11
如果是 null
你手边没有操作栏。
您也可以使用getSupportActionBar()
参考: Retrieving Android API version programmatically
http://developer.android.com/reference/android/app/Activity.html#getActionBar%28%29
所以我会这样做:
if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {
ActionBar actionBar = getActionBar(); //or SupportActionbar
if (actionBar != null) {
//Use Actionbar to set title and subtitle etc.
actionBar.setTitle(record_name);
actionBar.setSubtitle("Total: "+BigDecimal.valueOf(total).toPlainString()+"/-");
actionBar.setIcon(R.drawable.ic_header);
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
要删除此警告,您需要告诉 IDE 您知道您使用的 methods/fileds/classes 可用,因为 SDK 比您支持的最低版本更新。这是通过 @TargetApi
注释完成的。在您的情况下 @TargetApi(Build.VERSION_CODES.HONEYCOMB)
注释方法或整个 class.
重要提示:这只会删除警告,您仍然必须确保这些方法不会在它们所在的设备上被调用不存在。