0

Ich weiß, diese Frage wurde schon oft gefragt, und ich habe viele dieser Antworten versucht, aber nichts funktioniert für mich, also hier ist meine Frage. Ich habe Android-App, die WebView verwendet, früher war ich mit WebView in Aktivität, in dem Hinzufügen Aktion Aktion, die aktuelle URL Link der Seite teilt war einfach, aber in der letzten Aktualisierung habe ich WebView in Fragment hinzugefügt, und jetzt kann ich nicht hinzufügen Aktion in diesem Fragment teilen. Wie ich Knopf hinzugefügt habe, der auf der Aktionsleiste zeigt, aber es reagiert nicht auf Klick. Folgende sind meine Codes.Share-Aktion hinzufügen, um android WebView Fragment

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

Mitbenutzung des in 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; 
      } 

helfen Bitte mit der Arbeitslösung.

Antwort

0

diese Methoden in Ihrer Fragment-Klasse verwenden und Ihre gemeinsame Nutzung funcionality in diesen Methoden hinzufügen:

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

Und in Ihrer "OnCreateView()" Methode des Fragments fügen Sie diese Zeile:

setHasOptionsMenu(true); 

Hoffnung es wird klappen!

+0

Es funktionierte, einfachste und genaue Lösung, die ich nach Hunderten von Suchen habe. –

0

Sie können das Aktionsleistenmenü nur verwenden, nachdem Sie Ihre Toolbar als Aktionsleiste registriert haben.

In MainActivity:

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

Ihre Symbolleiste nun auf Aktionen in Ihrem Menü reagieren soll.

+0

Ich habe das getan, andere Option auf der Aktionsleiste, die nicht Link zu Webview sind gut funktionieren, es ist nur Aktie Aktion, die nicht funktioniert. –

Verwandte Themen