2016-06-02 4 views
2

Я пытаюсь нажать на кнопку ShareActionProvider на своем мобильном устройстве, но он полностью не отвечает. Ни один из приложений для обмена, таких как текстовые сообщения или отправка по электронной почте, не появляется. Я пометил ShareActionProvider как menu_share в моем XML-файле и использую метод onOptionsItemSelected для ответа на любые клики.Не удалось нажать на ShareAction Provider

Java

import android.support.v7.widget.ShareActionProvider; 

public class MainActivityFragment extends Fragment{ 
     ArrayAdapter<String> mForecastAdapter; 
     //String[] parsedWeatherData; 
     ShareActionProvider provider; 


public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.forecastfragment, menu); 
     MenuItem item = menu.findItem(R.id.menu_share); 
     provider = (ShareActionProvider)  
     MenuItemCompat.getActionProvider(item); 
    } 

public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menu_share: 
       Log.d("Weather", "Is menu share clicked"); 
       doShare(); 
       break; 
      default: 
       break; 
     } 
     return true; 
    } 

public void doShare() { 
     String message = oneDayWeather; 

     // populate the share intent with data 


     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_TEXT, message); 
     provider.setShareIntent(intent); 
    } 

XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:bwq="http://schemas.android.com/apk/res-auto" 
    > 

    <item 
     android:id="@+id/menu_share" 
     android:title="@string/menu_share" 
     bwq:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
     bwq:showAsAction="always"/> 


</menu> 

Любые идеи?

ответ

0

Ничего, я решил. Эта версия ShareActionProvider работает, только если вы установили метод setShareIntent сразу после получения провайдера. Например:

 MenuItem item = menu.findItem(R.id.menu_share); 
     provider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 
     provider.setShareIntent(getDefaultShareIntent());