2014-10-26 2 views
3

Итак, у меня есть веб-просмотр и меню. Он работает нормально, когда я открываю. Я установил, что если прогресс webview не равен 0 или не 100 (поэтому при загрузке страницы) элемент меню перезагрузки webview невидимый (поэтому вы не можете видеть), и элемент меню остановки отображается. И если веб-просмотр загрузил страницу (так что прогресс 100) или не может загрузить страницу (прогресс 0), элемент меню перезагрузки станет видимым, а пункт меню остановки станет невидимым. Я сказал, что он работает нормально ... ДО НЕ ДОЛЖЕН выйти из приложения. (Я не понимаю из истории системы).Фатальный сигнал 6 (sigabrt) (код = -6) webview

Я открыл приложение. врезаться! Зачем? Если я удалю из истории системы приложение, оно не сработает. Я уничтожил действие (в коде), но он не работает.

// ... 
@Override 
public void onProgressChanged(WebView view, int progress) { 
    progressBarLoad.setProgress(progress); 
    int prInt = progressBarLoad.getProgress(); 
    if (prInt > 0 && prInt < 100) { 
     menuMain.findItem(R.id.MenuExit).setVisible(true); 
     menuMain.findItem(R.id.MenuReload).setVisible(false); 
     } 
    if (prInt == 100 || prInt == 0) { 
     menuMain.findItem(R.id.MenuExit).setVisible(false); 
     menuMain.findItem(R.id.MenuReload).setVisible(true); 
     } 
    } 
//... 

OnKeyDown:

@Override 
    public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && !webViewMain.canGoBack()) { 
      if (booleanOnKeyDown) { 
       new AlertDialog.Builder(this) 
         .setTitle(getString(R.string.SureExitTitle)) 
         .setPositiveButton(getString(R.string.Yes), new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           finish(); 
           onDestroy(); 
          } 
         }) 
         .setNegativeButton(getString(R.string.No), new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int id) { 
           dialog.cancel(); 
          } 
         }).show(); 
      } 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

Журнал:

10-26 12:41:15.867 14008-14008/com.zokni1996.android_forum W/System.err﹕ java.lang.NullPointerException 
10-26 12:41:15.867 14008-14008/com.zokni1996.android_forum W/System.err﹕ at com.zokni1996.android_forum.Main.Main$6.onProgressChanged(Main.java:451) 
10-26 12:41:15.867 14008-14008/com.zokni1996.android_forum W/System.err﹕ at com.android.webview.chromium.WebViewContentsClientAdapter.onProgressChanged(WebViewContentsClientAdapter.java:271) 
+0

избегайте таких вещей, как смайлики и «блабла». держите его профессиональным. –

+0

ОК, извините, я отредактирую: S (и извините, мой плохой английский) –

ответ

1

Я решил проблему (да, это очень и очень плохое решение). Это было исключение в nullpoint. Я использовал try-catch.

// ... 
@Override 
public void onProgressChanged(WebView view, int progress) { 
    progressBarLoad.setProgress(progress); 
    if (progressBarLoad.getProgress() > 0 && progressBarLoad.getProgress() < 100) { 
     try { 
      menuMain.findItem(R.id.MenuExit).setVisible(true); 
      menuMain.findItem(R.id.MenuReload).setVisible(false); 
     } catch (Exception e) { 
      Log.i("Menu failed reload or stop ", "" + e); 
     } 
    } else { 
     try { 
      menuMain.findItem(R.id.MenuExit).setVisible(false); 
      menuMain.findItem(R.id.MenuReload).setVisible(true); 
     } catch (Exception e) { 
      Log.i("Menu failed reload or stop", "" + e); 
     } 
    } 
} 
//... 
Смежные вопросы