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的操作欄上工作正常,它只是分享行動,這是行不通的。 –