を有効にする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);
}
ありがとう。アレックス