2016-06-06 3 views
0

Я хочу реализовать код в своем фрагменте WebView, чтобы вернуться к предыдущим страницам. Я нашел решение here, но я не знаю, где его добавить в свой фрагмент WebView. Может кто-то помочь мне с этим? Должен ли я добавить его в MainActivity или в моем фрагменте WebView?Как вернуться на предыдущую страницу, если в фрагменте WebView нажата кнопка «Назад»?

MyWebViewFragment.java:

package tkr.firstprojects.com.tkr; 

import android.app.Fragment; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.webkit.WebBackForwardList; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MyWebViewFragment extends Fragment { 

WebView webview; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.web_fragment, container, 
      false); 

    Bundle bundle = getArguments(); 

    String url = bundle.getString("url"); 

    webview = (WebView) rootView.findViewById(R.id.webView1); 

    WebSettings settings = webview.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setBuiltInZoomControls(true); 
    settings.setSupportZoom(true); 


    webview.loadUrl(url); 

    webview.setWebViewClient(new WebViewClient() { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      view.loadUrl(url); 
      return true; 
     } 



    }); 

    return rootView; 


} 
} 

А вот код, который я хочу добавить из раствора, чтобы вернуться к предыдущим страницам. Где я должен добавить это?

webView.setOnKeyListener(new OnKeyListener() 
{ 
@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) 
{ 
    if(event.getAction() == KeyEvent.ACTION_DOWN) 
    { 
     WebView webView = (WebView) v; 

     switch(keyCode) 
     { 
      case KeyEvent.KEYCODE_BACK: 
       if(webView.canGoBack()) 
       { 
        webView.goBack(); 
        return true; 
       } 
       break; 
     } 
    } 

    return false; 
} 
}); 
+0

Возможный дубликат [Как вернуться на предыдущую страницу, если кнопка назад нажата в WebView?] (Http://stackoverflow.com/questions/6077141/ How-to-Go-Back-to-previous-page-if-back-button-is-press-in-webview) – FelixSFD

ответ

1

В вашей Fragment активность

@Override 
public void onBackPressed() { 
    //Get fragment and webview from the fragment 
    webview.goBack(); 
} 
+0

Привет, спасибо за ваш ответ. Я новичок, не могли бы вы рассказать мне, где я должен добавить это в свой код. Должен ли я добавить его в конец или в onCreate? –

+0

Активность, которая добавляет фрагмент, - это то, куда следует идти. Если вы не динамически добавляете фрагмент, переопределение должно быть в активности, которая рисует макет с фрагментом в нем. – aminner