无法将android.support.v4.view.MenuItemCompat强制转换为android.widget.ShareActionProvider

时间:2015-07-03 22:21:56

标签: java android android-studio

我目前正在使用可在http://www.raywenderlich.com/78576/android-tutorial-for-beginners-part-2

找到的在线教程学习android

到目前为止一直进展顺利,但我现在遇到了一些问题,即使我的代码与教程的代码匹配,我也会收到上面的错误消息(此主题的标题)。

我的导入如下......

import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBarActivity;
import  android.widget.ShareActionProvider;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Button;

我在if声明中遇到问题......

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu.
    // Adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);

    // Access the Share Item defined in menu XML
    MenuItem shareItem = menu.findItem(R.id.menu_item_share);

    // Access the object responsible for
    // putting together the sharing submenu
    if (shareItem != null) {
        mShareActionProvider =  (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
    }

    // Create an Intent to share your content
    setShareIntent();

    return true;
}

private void setShareIntent() {

    if (mShareActionProvider != null) {

        // create an Intent with the contents of the TextView
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Android Development");
        shareIntent.putExtra(Intent.EXTRA_TEXT, mainTextView.getText());

        // Make sure the provider knows
        // it should work with that Intent
        mShareActionProvider.setShareIntent(shareIntent);
    }
}

我认为这可能是由于最近的更新导致某些代码过时,但我并不是真的有很多想法,因为我不熟悉android。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要从支持库导入ShareActionProvider,如下所示:

import android.support.v7.widget.ShareActionProvider;

由于您支持较旧的Android版本并使用MenuItemCompat的支持库实现,因此您还需要使用与其交互的其他类的支持版本(如果可用)。您需要注意何时使用自动导入,如果有选择,请选择支持版本。