2015-07-29 2 views
0

Я работаю в приложении, и я создал WebView, который отображает Веб-сайт, мой веб-просмотр находится внутри фрагмента. Но у меня есть проблема с обращением кнопки, она закрывает приложение. Я попытался обработать кнопку назад, как следующие:Обращение с кнопкой Back to be WebNavigator

 rootView.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      if (arg1 == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) { 
       myWebView.goBack(); 
       return true; 
      } 
      return false; 
     } 
    }); 

Это внутри

onCreateView 

Это не работает. Как я могу обращаться с кнопкой «Назад», чтобы вернуться к предыдущей спине, и если нет страниц, на которые нужно выполнить резервное копирование. Он закрывает приложение.

Это мой фрагмент кода:

public class NewsFragment extends Fragment { 


private ProgressDialog progressDialog; 
private WebView myWebView ; 

public NewsFragment() { 
    // Required empty public constructor 
} 


    // Otherwise defer to system default behavior. 




@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View rootView = inflater.inflate(R.layout.fragment_news, container, false); 

    myWebView = (WebView) rootView.findViewById(R.id.mwl_Website); 
    myWebView.setWebViewClient(new WebViewClient()); 
    myWebView.getSettings().setBuiltInZoomControls(true); 
    myWebView.requestFocusFromTouch(); 
    myWebView.setVerticalScrollBarEnabled(true); 
    myWebView.setHorizontalScrollBarEnabled(true); 
    myWebView.setVerticalScrollBarEnabled(true); 
    myWebView.setHorizontalScrollBarEnabled(true); 
    myWebView.requestFocusFromTouch(); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.getSettings().setUseWideViewPort(true); 
    myWebView.getSettings().setLoadWithOverviewMode(true); 

    myWebView.addJavascriptInterface(new WebAppInterface(getActivity()), "Android"); 

    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.loadUrl("http://en.themwl.org/"); 


    new LoadViewTask().execute(); 

    rootView.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View arg0, int arg1, KeyEvent arg2) { 
      // TODO Auto-generated method stub 
      if (arg1 == KeyEvent.KEYCODE_BACK && myWebView.canGoBack()) { 
       myWebView.goBack(); 
       return true; 
      } 
      return false; 
     } 
    }); 


    return rootView; 

} 

вот мой LogCat

  07-29 08:37:49.614 18765-18765/com.mw.alahdal.amjad.mwlcopytwo E/WindowManager﹕ android.view.WindowLeaked: Activity com.mw.alahdal.amjad.mwlcopytwo.MainActivity has leaked window android.widget.ZoomButtonsController$Container{11ddaec7 V.E..... ......I. 0,0-1029,146} that was originally added here 
     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363) 
     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:261) 
     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 
     at android.widget.ZoomButtonsController.setVisible(ZoomButtonsController.java:370) 
     at com.android.org.chromium.android_webview.AwZoomControls.invokeZoomPicker(AwZoomControls.java:29) 
     at com.android.org.chromium.content.browser.ContentViewCore.onScrollBeginEventAck(ContentViewCore.java:1270) 
     at com.android.org.chromium.content.browser.ContentViewCore.nativeOnTouchEvent(Native Method) 
     at com.android.org.chromium.content.browser.ContentViewCore.onTouchEvent(ContentViewCore.java:1208) 
     at com.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onTouchEvent(AwContents.java:2312) 
     at com.android.org.chromium.android_webview.AwContents.onTouchEvent(AwContents.java:1698) 
     at com.android.webview.chromium.WebViewChromium.onTouchEvent(WebViewChromium.java:1910) 
     at android.webkit.WebView.onTouchEvent(WebView.java:2286) 
     at android.view.View.dispatchTouchEvent(View.java:8388) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2424) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2158) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2430) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2172) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2314) 
     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1692) 
     at android.app.Activity.dispatchTouchEvent(Activity.java:2739) 
     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2275) 
     at android.view.View.dispatchPointerEvent(View.java:8578) 
     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4021) 
     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3887) 
     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) 
     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) 
     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3578) 
     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) 
     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3635) 
     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3502) 
     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3468) 
     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3476) 
     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3449) 
     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5701) 
     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5675) 
a 
    07-29 08:38:34.239 18765-18798/com.mw.alahdal.amjad.mwlcopytwo D/MediaResourceGetter﹕ no ethernet/wifi connection detected 



    07-29 08:38:34.239 18765-18798/com.mw.alahdal.amjad.mwlcopytwo W/MediaResourceGetter﹕ non-file URI can't be read due to unsuitable network conditions 
    07-29 08:38:34.239 18765-18798/com.mw.alahdal.amjad.mwlcopytwo E/MediaResourceGetter﹕ Unable to configure metadata extractor 

ответ

1

Ручка WebView назад навигации, как это ...

view.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (event.getAction() == android.view.KeyEvent.ACTION_DOWN) { 
       if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) { 
        if(webView!=null) 
        { 
         if(webView.canGoBack()) 
         { 
         webView.goBack(); 
         } 
        } 
       } 
      } 
      return true; 
     } 
    }); 
+0

Объяснить Больше. Потому что я это пробовал. Это не работает. –

+0

Какая ошибка? объяснить? –

+0

Задняя кнопка закрывает приложение –

Смежные вопросы