gpt4 book ai didi

java - 调用 MenuItem.getActionProvider() 时出现异常

转载 作者:行者123 更新时间:2023-11-29 18:41:18 26 4
gpt4 key购买 nike

所以我在我的一个 Activity (AppCompatActivity) 上有这个覆盖方法,它来 self 在 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 方法。

最佳答案

因此,在 sasikumar 的评论的帮助下,我设法找到并解决了问题:

所以我不得不使用:

MenuItemCompat.getActionProvider(menuItem)

但是,我必须将 ActionProvider 的类型更改为:

android.support.v7.widget.ShareActionProvider

现在,我可以安全地转换 getActionProvider 的结果,并保持使用以下方法设置共享 Intent 的能力:

_shareActionProvider.setShareIntent(intent)

除此之外,我还必须更改 ShareActionProvider 的命名空间

来自:

android.widget.ShareActionProvider

到:

android.support.v7.widget.ShareActionProvider

关于java - 调用 MenuItem.getActionProvider() 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com