gpt4 book ai didi

Android错误java.lang.NoSuchMethodError : android. view.MenuItem.getActionProvider

转载 作者:行者123 更新时间:2023-11-29 14:39:27 25 4
gpt4 key购买 nike

我启用了 ShareActionProvider 并收到此错误:

java.lang.NoSuchMethodError: android.view.MenuItem.getActionProvider

但是我使用这个类的方式是这样的:

    // SHARING ONLY ENABLED in SDK 14 which is Ice Cream Sandwich
try
{
if ( android.os.Build.VERSION.SDK_INT >= 14 )
{
Button share = (Button)findViewById(R.id.share_button);
share.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
openOptionsMenu();
}
});
}
else
{
// HIDE THE TWO PAGE ELEMENTS
Button share = (Button)findViewById(R.id.share_button);
TextView share_prompt = (TextView)findViewById(R.id.share_prompt);

share.setVisibility(View.GONE);
share_prompt.setVisibility(View.GONE);
}
}
catch ( Exception e )
{

}

所以我认为我不会显示早期 sdk 的共享按钮,我会没事的。但是我遇到了很多崩溃。

我无法真正对此进行测试,因为我没有带有早期版本 SDK 的手机。但这是否意味着这些页面对于使用早期 SDK 版本的每个人都会崩溃?或者只是点击分享的人?如何防止这种崩溃?

我在类里面有这些方法。如果 sdk 小于 14,我是否应该不运行它们?

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.layout.menu, menu);
MenuItem item = menu.findItem(R.id.menu_item_share);
myShareActionProvider = (ShareActionProvider)item.getActionProvider();
myShareActionProvider.setShareHistoryFileName(
ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
myShareActionProvider.setShareIntent(createShareIntent());
return true;
}

private Intent createShareIntent()
{
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT,
"Some text");
return shareIntent;
}

// Somewhere in the application.
public void doShare(Intent shareIntent)
{
// When you want to share set the share intent.
myShareActionProvider.setShareIntent(shareIntent);
}

谢谢。亚历克斯

最佳答案

ShareActionProvider 仅适用于 API 14+,这意味着在早期版本中您无法使用它。如果您想在您的应用中添加分享按钮并支持旧的 API 级别,我建议您使用 ActionBarSherlock - 一个库,让您有机会在旧版本的 Android 中使用 ActionBar。使用这个库,你可以做这样的事情来添加分享按钮:

MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar);
ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider();
actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME);
actionProvider.setShareIntent(createShareIntent());


private Intent createShareIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
return shareIntent;
}

这将共享一个图像文件。如果您不想支持旧的 API 级别,我建议您只检查 API 级别,并根据该级别使用 ShareActionProvider

希望这对您有所帮助。

关于Android错误java.lang.NoSuchMethodError : android. view.MenuItem.getActionProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156778/

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