大家好我在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>
答案 0 :(得分:0)
Android 2.x中没有开箱即用的ActionBar。崩溃正在发生,因为MenuItem不理解API {14(Android 4.0冰淇淋三明治)中引入的getActionProvider()
。
您有两种选择:
这是您可以做的,以避免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;
}