У меня проблемы с ShareActionProvider. Мне нравится делиться текущим URL-адресом webview (URL можно изменять динамически через JS) через ShareActionProvider. Для этого я перезаписал onOptionsItemSelected, чтобы изменить Intent через setShareIntent. Но когда я нажимаю на ShareActionProvider и делюсь им через конкретное приложение, ничего не происходит. Я отлаживал его, и я узнал, что onOptionsItemSelected не запускается. Может кто-нибудь мне помочь?Определите, активирован ли эффект ShareActionProvider
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.game, menu);
MenuItem mShareActionProviderItem = (MenuItem) menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider) mShareActionProviderItem.getActionProvider(); // is a field
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
mShareActionProvider.setShareIntent(sendIntent); //needed to be able to click on Item
mShareActionProviderItem.getActionView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String url = ((GameFragment) getFragmentManager().findFragmentByTag(GAME_FRAGMENT)).getUrl();
/*ShareButton set URL*/
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, String.format(getResources().getString(R.string.share_text), url));
mShareActionProvider.setShareIntent(sendIntent);
}
});
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_share:
/*URL holen*/
String url = ((GameFragment) getFragmentManager().findFragmentByTag(GAME_FRAGMENT)).getUrl();
/*ShareButton mit URL bestücken*/
ShareActionProvider mShareActionProvider = (ShareActionProvider) item.getActionProvider();
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, String.format(getResources().getString(R.string.share_text), url));
mShareActionProvider.setShareIntent(sendIntent);
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
можно дублировать http://stackoverflow.com/questions/11627892/onoptionsitemselected-not-called-when-using-actionlayout-sherlockactionbar – zizoujab
Это сообщение не работает для меня. Я описал неправильное поведение выше. Поэтому мой поток НЕ является дубликатом. – janwo
Предложение с setOnClickListener (см. Здесь http://stackoverflow.com/a/11628492/1463921) не работает, потому что у меня есть ShareActionProvider-Widget, и я думаю, что он ведет себя по-другому. Оба, setOnClickListener и onOptionsItemSelected не запускаются при нажатии на кнопку совместного доступа. У кого-нибудь есть идея? – janwo