0

我知道这个问题已经被问过很多次了,而且我已经尝试了很多这些答案,但是nothings适合我,所以这里是我的问题。我有使用WebView的Android应用程序,早些时候我在使用WebView的活动中添加共享页面的当前URL链接的共享操作很容易,但在最近的更新中,我添加了WebView的片段,现在我无法添加在该片段中共享操作。由于我添加了在操作栏上显示的按钮,但它没有响应点击。以下是我的代码。添加共享动作到android web视频片段

main.xml中

<item android:id="@+id/menu_item_share" 
     android:icon="@drawable/ic_menu_share" 
     android:title="@string/menu_item_share" 
     app:showAsAction="always"/> 

WebviewFragment.java在MainActivity.java

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 

      //share app content 
      case R.id.menu_item_share: { 
       Intent shareIntent = new Intent(Intent.ACTION_SEND); 
       shareIntent.setType("text/plain"); 
       shareIntent.putExtra(Intent.EXTRA_TEXT, myWebView.getUrl()); 
       startActivity(Intent.createChooser(shareIntent, "Share This Website!")); 
       shareIntent.setPackage("com.whatsapp"); 
       break; //or, return true; 
      } 

请与工作解决方案帮助

public class WebviewFragment extends Fragment { 
    ProgressBar bar; 
    WebView myWebView; 
    private Handler handler = new Handler(){ 
     @Override 
     public void handleMessage(Message message) { 
      switch (message.what) { 
       case 1:{ 
        webViewGoBack(); 
       }break; 
      } 
     } 
    }; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.fragment_webview, container, false); 
     ; 
     myWebView = (WebView) v.findViewById(R.id.WebView); 
     myWebView.getSettings().setJavaScriptEnabled(true); 
     myWebView.loadUrl("http://www.google.com/"); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     //improve webView performance 
     myWebView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH); 
     myWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 
     myWebView.getSettings().setAppCacheEnabled(true); 
     myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     webSettings.setDomStorageEnabled(true); 
     webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS); 
     webSettings.setUseWideViewPort(true); 
     webSettings.setSavePassword(true); 
     webSettings.setSaveFormData(true); 
     webSettings.setEnableSmoothTransition(true); 
     myWebView.setWebViewClient(new WebViewClient()); 
} 

份额的行动。

回答

0

使用这些方法,您的片段类,并添加您的共享的funcionality这些方法:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
// Do something that differs the Activity's menu here 
super.onCreateOptionsMenu(menu, inflater); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 

    case R.id.activity_menu_item: 

     // Not implemented here 
     return false; 
    case R.id.fragment_menu_item: 

     // Do Fragment menu item stuff here 
     return true; 

    default: 
     break; 
} 

return false; 
} 

而在片段的你“OnCreateView()”方法加入这一行:

setHasOptionsMenu(true); 

希望它会工作!

+0

它工作,最简单和准确的解决方案,我已经得到了数百次搜索。 –

0

只有在将工具栏注册为操作栏后,才能使用操作栏菜单。

在MainActivity:

Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar); 
    setSupportActionBar(myToolbar); 

工具栏现在应该在你的菜单操作响应。

+0

我已经这样做了,其他选项在没有链接到webview的操作栏上工作正常,它只是分享行动,这是行不通的。 –