Android - 共享菜单项无法点击

时间:2017-06-27 09:10:09

标签: java android android-fragments shareactionprovider

环境:




    

  1. Android API 25
  2. 

  3. Android Studio 2.3.3
  4. 





我正在尝试将共享项添加到菜单中,这是我的代码,我尝试过这些解决方案和搜索三天但它没有解决我的问题




    

  1. 无法将动作提供者转换为共享动作提供者
  2. 

  3. 为什么MenuItemCompat.getActionProvider返回null?
  4. 





菜单xml资源 detail_fragment.xml < / code>:

&#xA;&#xA;
 &lt;?xml version =“1.0”encoding =“utf-8”?&gt;&#xA;&lt; ; menu xmlns:android =“http://schemas.android.com/apk/res/android”&#xA;的xmlns:应用= “http://schemas.android.com/apk/res-auto” &GT;&#XA; &LT;项目&#XA;机器人:ID = “@ + ID / action_share” &#XA;机器人:标题= “@串/ action_share” &#XA;应用程式:showAsAction = “总是” &#XA;应用程式:actionProviderClass = “android.support.v7.widget.ShareActionProvider”/&GT;&#XA;&LT; /菜单&gt;&#XA;  
&#XA;&#XA;

片段代码:

&#xA;&#xA;
  package com.example.poula.sunshine;&#xA;&#xA; import android.content .Intent;&#xA; import android.support.annotation.Nullable;&#xA; import android.support.v4.app.Fragment;&#xA; import android.os.Bundle;&#xA; import android.support .v4.view.MenuItemCompat;&#xA; import android.support.v7.widget.ShareActionProvider;&#xA; import android.util.Log;&#xA; import android.view.LayoutInflater;&#xA; import android .view.Menu;&#xA; import android.view.MenuInflater;&#xA; import android.view.MenuItem;&#xA; import android.view.View;&#xA; import android.view.ViewGroup;& #xA; import android.widget.TextView;&#xA; import android.widget.Toast;&#xA;&#xA; / **&#xA; *包含简单视图的占位符片段。&#xA; * /&#xA;公共类DetailActivityFragment扩展Fragment {&#xA;&#xA; private static final String LOG_TAG = DetailActivityFragment.class.getSimpleName();&#xA; private static final String FORECAST_SHARE_STRING =“#SunshineApp”;&#xA;私人ShareActionProvider mShareActionProvider;&#xA;&#xA; private String forecastStr;&#xA;&#xA; public DetailActivityFragment(){&#xA; }&#XA;&#XA; @越权#XA; public void onCreate(@Nullable Bundle savedInstanceState){&#xA; super.onCreate(savedInstanceState);&#XA; setHasOptionsMenu(真);&#XA; }&#XA;&#XA; @越权#XA; public void onCreateOptionsMenu(菜单菜单,MenuInflater inflater){&#xA; super.onCreateOptionsMenu(menu,inflater);&#xA; inflater.inflate(R.menu.menu_detail,菜单);&#XA; inflater.inflate(R.menu.detail_fragment,菜单);&#XA;&#XA; MenuItem menuItem = menu.findItem(R.id.action_share);&#xA;&#xA; mShareActionProvider =(ShareActionProvider)MenuItemCompat.getActionProvider(menuItem);&#xA;&#xA; if(mShareActionProvider!= null){&#xA; mShareActionProvider.setShareIntent(createShareForecastIntent());&#XA; }其他{&#XA; Log.d(LOG_TAG,“Share Action Provider为null !!”);&#xA; Toast.makeText(getActivity(),“Share Action Provider为null !!”,Toast.LENGTH_SHORT).show();&#xA; }&#XA; }&#XA;&#XA; @越权#XA; public boolean onOptionsItemSelected(MenuItem item){&#xA; return super.onOptionsItemSelected(item);&#xA; }&#XA;&#XA; @越权#XA; public View onCreateView(LayoutInflater inflater,ViewGroup容器,&#xA; Bundle savedInstanceState){&#xA; Intent intent = getActivity()。getIntent();&#xA;查看rootView = inflater.inflate(R.layout.fragment_detail,container,false);&#xA; if(!(intent == null)&amp;&amp; intent.hasExtra(Intent.EXTRA_TEXT)){&#xA; forecastStr = intent.getStringExtra(Intent.EXTRA_TEXT);&#xA; TextView tv =(TextView)rootView.findViewById(R.id.detail_text);&#xA; tv.setText(forecastStr);&#XA; }&#XA;&#XA; return rootView;&#xA; }&#XA;&#XA; private Intent createShareForecastIntent(){&#xA; Intent shareIntent = new Intent(Intent.ACTION_SEND);&#xA; shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);&#XA; shareIntent.setType( “text / plain的”);&#XA; shareIntent.putExtra(Intent.EXTRA_TEXT,forecastStr +“”+ FORECAST_SHARE_STRING);&#xA; return shareIntent;&#xA; }&#XA;}&#XA;  
&#XA;&#XA;

的问题:

&#XA;&#XA;
    &#xA;
  1. 栏上的共享项目无法点击
  2. &#xA;
&#xA;&#xA;

有关如何解决这两个问题的任何想法?

&#XA;

0 个答案:

没有答案