设置ActionBar后Android 2.x中出现错误

设置ActionBar后Android 2.x中出现错误,android,android-actionbar,backwards-compatibility,Android,Android Actionbar,Backwards Compatibility,大家好,我在MainActivity.java中设置了这段代码,以便在我的应用程序上添加一个共享按钮。我知道action bar在以前的android版本上不能很好地工作。一位拥有安卓2.3的客户告诉我,当他点击手机菜单按钮时,应用程序崩溃并被迫关闭。 从3.0版到以上版本,一切正常,您可以看到共享按钮。如果android版本低于3.0,我是否可以在这个函数之前添加一些代码来覆盖或阻止使用共享按钮操作 这是我代码中的内容: @Override public boolean onCrea

大家好,我在MainActivity.java中设置了这段代码,以便在我的应用程序上添加一个共享按钮。我知道action bar在以前的android版本上不能很好地工作。一位拥有安卓2.3的客户告诉我,当他点击手机菜单按钮时,应用程序崩溃并被迫关闭。 从3.0版到以上版本,一切正常,您可以看到共享按钮。如果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;
    }
My 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>

ActionBar在Android2.x中是不可用的。崩溃之所以发生,是因为MenuItem不理解API 14安卓4.0冰激凌三明治中引入的MenuItem

您有两个选择:

在旧版本的Android中使用ActionBar; 或者,您可以实现旧的2.x菜单。 这是可以避免2.x设备崩溃的方法。通过检查设备是否运行冰激凌三明治或更高版本来保护新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;
}

请正确格式化您的代码。我已格式化代码。完成!感谢您的帮助,我添加了Build.VERSION.SDK\u INT>=Build.VERSION\u CODES.ICE\u CREAM\u SANDWICH这一行,但在这之后,MenuItem shareItem出现错误,它们以红色线条显示。如果我放一个;如果Build.VERSION.SDK\u INT>=Build.VERSION\u code.ICE\u CREAM\u SANDWICH;错误消失。我很抱歉,我忘了在if语句后加上{大括号。我更正了上面的代码。谢谢,我可以解决这个问题。有没有办法联系你,因为我没有找到通过这里的方法。谢谢!