![](/img/trans.png)
[英]ActionBar Compat ActionBarActivity setTitle does not work in Android 2.X
[英]Error in Android 2.x after setting the ActionBar
嗨,大家好,我在MainActivity.java中設置了此代碼,以在應用程序上添加共享按鈕。 我知道操作欄在早期的android版本上無法正常工作。 一位裝有android 2.3的客戶告訴我,當他按下電話菜單按鈕時,應用程序崩潰並被迫關閉。 從3.0版到更高版本,一切正常,您會看到“共享”按鈕。 我可以在此功能之前添加一些代碼行來覆蓋o如果Android版本低於3.0,則阻止使用共享按鈕操作?
這是我的代碼中的內容:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share);
ShareActionProvider mShare = (ShareActionProvider)shareItem.getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Download here https://www.apps.com");
mShare.setShareIntent(shareIntent);
return true;
}
我的menu.xml文件具有以下內容(顯示圖標,可以正常運行):
<item android:id="@+id/action_share" android:title="@string/menu_share"
android:icon="@drawable/menu_share" android:showAsAction="ifRoom"
android:actionProviderClass="android.widget.ShareActionProvider"></item>
在Android 2.x中無法立即使用ActionBar。 發生崩潰是因為MenuItem無法理解getActionProvider()
,它是API 14(Android 4.0 Ice Cream Sandwich)中引入的。
您有兩種選擇:
這是可以避免在2.x設備上崩潰的方法。 通過檢查設備是否正在運行Ice Cream Sandwich或更高版本來保護使用較新的API:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share);
ShareActionProvider mShare = (ShareActionProvider)shareItem.getActionProvider();
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Download here https://www.apps.com");
mShare.setShareIntent(shareIntent);
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.