Не мог бросить Поставщика Действия для Совместного использования Поставщика Действия

Ниже код для моего Действия

    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v7.widget.ShareActionProvider;
    import android.view.Menu;
    import android.view.MenuItem;

    public class MainActivity extends Activity {
    private ShareActionProvider shareAction;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        MenuItem item = menu.getItem(R.id.menu_settings);
        shareAction = (ShareActionProvider) item.getActionProvider();
        return true;
    }
}

Проблема состоит в том, что существует ошибка броска от ActionProvider до ShareActionProvider. То, почему это так ниже, является activity_menu.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/menu_settings"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="@string/menu_settings"
    android:actionProviderClass="android.widget.ShareActionProvider"
    />

</menu>
59
задан 5 April 2017 в 06:42

2 ответа

Ни одно из решений здесь не решило мою проблему с ShareActionProvider, не бросив / возврат пустого указателя. Я закончил тем, что заменил ShareActionProvider только с Намерением. SEND_ACTION для добавления изображений в моем приложении, как представленный в учебном руководстве Разработчиков Android: https://developer.android.com/training/sharing/send

, Хотя Google упоминает в этом учебном руководстве что: Note: The best way to add a share action item to an ActionBar is to use ShareActionProvider, which became available in API level 14. ShareActionProvider is discussed in the lesson about Adding an Easy Share Action. я нашел намного более простым реализовать просто Намерение. SEND_ACTION. Не уверенный, если существуют другие причины реализовать ShareActionProvider...

0
ответ дан 1 November 2019 в 11:03

Это спросили несколько лет назад, таким образом, существующие ответы, вероятно, работали тогда. Однако во время этого написания предложенного кода дает много предупреждений депрекации, и это не решает проблему.

я действительно в конечном счете решал проблему, и она не была зарегистрирована нигде в сети (что я мог найти), таким образом, надо надеяться, этот ответ поможет людям, которые в настоящее время сталкиваются с этой той же проблемой.

решение для меня было в операторе импорта. Когда я использовал SharedActionProvider впервые, Studio Android может добавить импорт автоматически. Это предоставляет две возможности для того, что импортировать: android.widget.ShareActionProvider и androidx.appcompat.widget.ShareActionProvider.

Первый повреждается и приводит к ошибке о броске, никогда не успешно выполняющемся. Последний заставит все работать правильно. app:ActionProviderClass в файле меню должно быть идентично импортированному имени файла.

0
ответ дан 1 November 2019 в 11:03

Другие вопросы по тегам:

Похожие вопросы: