Исключение при вызове MenuItem.getActionProvider () - PullRequest
0 голосов
/ 25 октября 2018

Итак, у меня есть метод переопределения для одного из моих действий (AppCompatActivity), и он взят из моего старого проекта, который был разработан в Eclipse Luna.

Я получаю исключение всякий раз, когда я звоню:

_shareActionProvider = (ShareActionProvider) item.getActionProvider();

Информация об исключении:

2018-10-25 15:39:22.332 20677-20677/com.eibimalul.smartgallery E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.eibimalul.smartgallery, PID: 20677
    java.lang.UnsupportedOperationException: This is not supported, use MenuItemCompat.getActionProvider()
        at android.support.v7.view.menu.MenuItemImpl.getActionProvider(MenuItemImpl.java:782)
        at com.eibimalul.smartgallery.SingleImageDisplayActivity.onCreateOptionsMenu(SingleImageDisplayActivity.java:309)
        at android.app.Activity.onCreatePanelMenu(Activity.java:3465)

Вот мой метод:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.options_menu, menu);
        MenuItem item = menu.findItem(R.id.action_share);

        _shareActionProvider = (ShareActionProvider) item.getActionProvider();

        Intent shareIntent = createShareIntent();
        _shareActionProvider.setShareIntent(shareIntent);

        return true;
    }

Редактировать:

Просто чтобы уточнить:

Где-то еще в моем коде мне нужно использовать:

_sharedActionProvider.setShareIntent(intent);

Поэтому, если я хочу использовать то, что @sasikumar предлагает ниже, это означает, что мне нужно изменить тип поставщика и новыйТип не имеет метода setShareIntent.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Итак, мне удалось найти проблему и решить ее с помощью комментария sasikumar:

Так что мне пришлось использовать:

MenuItemCompat.getActionProvider(menuItem)

, но мне пришлось изменитьтип моего ActionProvider:

android.support.v7.widget.ShareActionProvider

И теперь я могу безопасно привести результат из getActionProvider и сохранить возможность устанавливать намерение общего ресурса, используя:

_shareActionProvider.setShareIntent(intent)

InКроме того, мне пришлось изменить пространство имен ShareActionProvider

с:

android.widget.ShareActionProvider

на:

android.support.v7.widget.ShareActionProvider
0 голосов
/ 25 октября 2018

Используйте

MenuItemCompat.getActionProvider(menuItem)

вместо

item.getActionProvider();
...