0

この質問は以前何度も聞かれていましたが、私はそれらの答えの多くを試しましたが、nothingsが私のために働くので、ここに私の質問があります。私はWebViewを使用するアンドロイドアプリを持っています。以前は、現在のURLリンクを共有する共有アクションを追加する作業が簡単だったWebViewを使用していましたが、最近のアップデートではWebViewをフラグメントに追加しました。その断片の行動を共有する。アクションバーに表示されるボタンを追加したので、クリックには反応しません。以下は私のコードです。アンドロイドウェブビューのフラグメントに共有アクションを追加してください

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

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()); 
} 

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; 
      } 

で共有アクションワーキング溶液で助けてください。

答えて

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へのリンクではないアクションバーの他のオプションが正常に動作している、それは動作していない共有アクションです。 –

関連する問題