2016-05-08 4 views
0

WebViewがあります。ビューを元に戻すときにBackボタンを2回押すとクラッシュします。何が起こるかは、最初のBack Pressで、それはページを元に戻す(ページA)のロードを引き起こし、次に2番目のonKeyDownイベントが来て、WebViewをkillする(期待どおり)。 WebViewがすでに終了した後、ページAはロードされ続けます(Backボタンを最初に押すため)、onPageStartedとonPageFinishedが呼び出されます。これらの関数は、webViewが既に破棄されているため、アプリケーションをクラッシュさせます。 ?バックプレスでAndroid WebViewがクラッシュする2回

@Override 
     public boolean onKeyDown(int keyCode, KeyEvent event) { 
      if (event.getAction() == KeyEvent.ACTION_DOWN) { 
       switch (keyCode) { 
        case KeyEvent.KEYCODE_BACK: 
         if (page.canGoBack()) { 
          progressBar.stopProgressAnimation(); 
          page.goBack(); 
          return true; 
         } else {   
          exitGracefully(); 
         } 
       } 

      } 
      return super.onKeyDown(keyCode, event); 
     } 

private void exitGracefully() { 
     destroyWebview(); 
     navigationBarLayout.recycleViewBitmaps(); 
     getActivity().finish(); 
    } 

答えて

0
@Override 
public boolean onKeyDown(int keycode, KeyEvent event) { 
    if (event.getAction() == KeyEvent.ACTION_DOWN) { 
     switch (keycode) { 
      case KeyEvent.KEYCODE_BACK: 
       if (view.canGoBack()) { 
        view.goBack(); 
       } else { 
        finish(); 
       } 
       return true; 
     } 
    } 
    return super.onKeyDown(keycode, event); 
} 
} 

これは私の場合で働いている 'trueを返す;' を追加。スイッチケース内のステートメント....残念ながら

+0

、これはonPageFinを助けていませんWebViewを終了した後もonPageとonPageStartedが呼び出されます – user2924714

関連する問題