2016-04-25 6 views
0

Hallo Ich habe eine Android-App, die eine recycleview. Wenn Benutzer auf eine viewholderbutton klicken. App startet eine webview (innerhalb fragment). Ich möchte behandeln, wenn Benutzer klicken zurück, webview wird zurückgehen, wenn es einen Verlauf gibt, und wenn es keinen Verlauf gibt, wird die App das webview Fragment schließen und die recycleview zurückkommen.webview fragment zurück zu

Ich habe erfolgreich den Rücken zu behandeln, wenn es eine Geschichte ist (aber Webansicht kann nicht zurückkommen Ansicht aufzubereiten, wenn es keine Geschichte ist

Hier ist mein webview Code

webView.setOnKeyListener(new View.OnKeyListener() { 

       public boolean onKey(View v, int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
         if (webView.canGoBack()) { 
          webView.goBack(); 
         }else { 
          getActivity().getSupportFragmentManager().popBackStack(); 
         } 
         return true; 
        } 
        return false; 
       } 

      }); 

Alles falsch mit diesen Code? jede Hilfe ist sehr zu schätzen weiß. Dank

Bearbeiten ich benutze diesen Code in recycleviewadapter Klasse Taste auf ViewHolder Klasse zu behandeln

url.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Bundle bundle = new Bundle(); 
        bundle.putString("topStoryUrl", topStories.get(getLayoutPosition()).getUrl()); 

        TopStoryWebView topStoryWebViewFragment = new TopStoryWebView(); 
        topStoryWebViewFragment.setArguments(bundle); 
        if (ItemListActivity.mTwoPane) { 

         ((FragmentActivity) context).getSupportFragmentManager() 
           .beginTransaction() 
           .add(R.id.item_detail_container, topStoryWebViewFragment) 
           .commit(); 
        } else { 
         topStoryWebViewFragment.setArguments(bundle); 
         ((FragmentActivity) context).getSupportFragmentManager() 
           .beginTransaction() 
           .add(R.id.frameLayout, topStoryWebViewFragment) 
           .commit(); 
        } 
       } 
      }); 
+0

werden Sie das Fragment in derselben Aktivität mit dem Ihr recyclerview ther ist ?? oder Sie verwenden separate Aktivität für Fragment. –

+0

Hallo Danke für Ihre Antwort. Ich habe die Frage bearbeitet. Ich setze Knopfgriff in den recycleView Adapter ViewHolder Klasse –

+0

((FragmentActivity) Kontext) .getSupportFragmentManager(). BeginTransaction() .add (R.id.item_detail_container, topStoryWebViewFragment) // Fügen Sie diese Transaktion zum Backstack hinzu (name ist ein optionaler Name für diesen Back-Stack-Status oder null). .addToBackStack (null) . Commit(); –

Antwort

1

addToBackStack wird Ihr Fragment in den Stapel, und Sie können diesen Stapel später auf

((FragmentActivity) context).getSupportFragmentManager() 
.beginTransaction() 
.add(R.id.item_detail_container, topStoryWebViewFragment) 
// Add this transaction to the back stack (name is an optional name for this back stack state, or null). 
.addToBackStack(null) 
.commit(); 
+0

vielen Dank für Ihre Hilfe. Btw wie kann ich die Rückseite benennen und die Rückseite später zurückrufen (zum Beispiel zurück zu spezifischem hinterem Zustand anstelle des meisten gegenwärtigen rückseitigen Zustandes –

+0

Entschuldigung, ich weiß nicht darüber noch, wenn ich irgendeine Lösung diesbezüglich habe, werde ich Sie pingen . –