我启用了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);
}
谢谢。亚历克斯