2014-10-29 2 views
0

Fragment을 사용하여 WebView을 만들었습니다.웹 뷰 (프래그먼트)를 보는 동안 뒤로 버튼 재정의

public class MyWebView extends Fragment { 

    private WebView webView; 

    @SuppressLint("SetJavaScriptEnabled") 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Bundle args = getArguments(); 
     String url = args.getString("url"); 
     webView = (WebView) getView().findViewById(R.id.webView); 

     webView.setWebViewClient(new MyBrowser()); 

     WebSettings webSettings = webView.getSettings(); 
     webSettings.setSaveFormData(true); 
     webSettings.setUseWideViewPort(true); 
     webSettings.setLoadWithOverviewMode(true); 
     webSettings.setSupportZoom(true); 
     webSettings.setBuiltInZoomControls(true); 

     webSettings.setLoadsImagesAutomatically(true); 
     webSettings.setJavaScriptEnabled(true); 
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
     webView.loadUrl(url); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View view = inflater.inflate(R.layout.web_view, container, false); 

     view.setOnKeyListener(new OnKeyListener() { 
       @Override 
       public boolean onKey(View v, int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_BACK) { 
         if (webView.canGoBack()) { 
          webView.goBack(); 
          return true; 
         } 
        } 
        return false; 
       } 
     }); 

     return view;   
    } 

    private class MyBrowser extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 
} 

내가 onBackPressed()을 무시하려하지만 Fragment와 함께 작동하지 않을 것 : 여기 내 코드입니다. 그래서 setOnKeyListener()을 사용했지만 작동하지 않습니다. 이전 웹 페이지로 돌아가는 대신 뒤로 버튼이 앱을 닫는 이유를 말해 줄 수 있습니까?

+0

나는 http://stackoverflow.com/questions/6077141/how-to-go-back-to-previous-page-if-back-button- ... 더 많은 정보를 찾을 수 있습니다 여기에 생각 웹에서 눌렀을 때 – PaytoN

+0

@PaytoN URL이 프래그먼트가 아닌 사용 행위를 나타냄 – WardaLyn

+0

뒤로 버튼은 현재 열어 본 화면에서 나가게합니다. 웹보기의 경우 웹보기에서 어떤 페이지에 있든 상관 없습니다. 그것의 다만 1 개의 스크린, (단편 또는 활동) 그래서 그것을 누르는 동안 현재 스크린을 맑게하고 돌아 간다, 당신이 안으로 웹 페이지 연결이 나던 한. –

답변

0

FragmentOnBackPressed 이벤트의 콜백을 수신하지 않습니다. 프래그먼트가 표시 될 때 Activity 상태를 인식하고 활동과 프래그먼트간에 앞뒤로 의사 소통해야합니다.

예를 들어 key에서 호출중인 코드를 공개 부울 함수로 만들 수 있습니다. 단편이있는 경우 상호 작용할 때와 유사한 방식으로 true 또는 false를 계속 반환합니다. 다시 돌아갈 페이지가 더 이상 없다면 자연스럽게 계속해야한다면 활동.