2013-09-17 6 views
0

У меня проблема с моим WebView. Когда я запускаю приложение с Eclispe, он отлично работает на моем устройстве (Samsung Galaxy S2, Android 4.1.2/API 16). Он загружает веб-сайт, который я передал с webview.loadUrl ('мой url'); а также захватывает некоторые предупреждения и прочее. Когда я оставляю приложение, перезагрузите его, он работает только один раз. Когда я перезапущу приложение во второй раз, он не загрузит URL. Я предполагаю, что это имеет какое-то отношение к savedInstanceState, но даже если я установил этот Bundle в null в самом начале Деяний, он не перезагрузит URL.Android пустой WebView после перезагрузки приложения

protected void onCreate(Bundle savedInstanceState) { 
    savedInstanceState=null; 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    browser = (WebView) findViewById(R.id.browser); 
... 
    browser.loadUrl(url); 
} 

Я также попытался удалить все Печенье с

CookieSyncManager.createInstance(this); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.removeAllCookie(); 

Тем не менее с той же ошибкой. Я уже прочитал много разрешенных сообщений и вопросов о WebView в Android, но ничего не помогло. Есть ли какие-либо идеи? Я запутался ...

Всего OnCreate Метод:

@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    savedInstanceState=null; 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    browser = (WebView) findViewById(R.id.browser); 
    //  if (savedInstanceState != null) { 
    //   browser.restoreState(savedInstanceState); 
    //  } 
    /* JavaScript must be enabled if you want it to work, obviously */ 
    browser.getSettings().setJavaScriptEnabled(true); 

    final Context myApp = this; 
    final Communicator c = new Communicator(); 

    /* WebChromeClient must be set BEFORE calling loadUrl! */ 
    browser.setWebChromeClient(new WebChromeClient() { 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, 
       final android.webkit.JsResult result) { 

      Log.d(TAG, "onJsAlert"); 

      try { 
       JSONObject json = new JSONObject(message); 
       if (json.has("func")) { 
        if (json.getString("func").equals("onUserInfos")) { 
         c.onUserInfos(json); 
         Log.d(TAG, "JSON verarbeitet"); 
        } 
       } 

       return true; 
      } catch (JSONException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

      // TODO 
      Log.v(TAG, "JavaScript Alert empfangen"); 
      new AlertDialog.Builder(myApp) 
        .setTitle("javaScript dialog") 
        .setMessage(message) 
        .setPositiveButton(android.R.string.ok, 
          new AlertDialog.OnClickListener() { 
           public void onClick(DialogInterface dialog, 
             int which) { 
            result.confirm(); 
           } 
          }).setCancelable(false).create().show(); 

      return false; 
     }; 
    }); 
    // Reset all Cookies 
    CookieSyncManager.createInstance(this); 
    CookieManager cookieManager = CookieManager.getInstance(); 
    cookieManager.removeAllCookie(); 

    /* load a web page which uses the alert() function */ 
    String url = c.getGuiURL(); 
    browser.loadUrl(url); 

} 

ответ

1

При выходе из приложения процесс, вероятно, продолжает работать. Поэтому, когда вы вернетесь в свое приложение, вместо onCreate будет вызываться метод onResume.

Checkout этой страница на андроиде сайте разработчика для получения дополнительной информации о жизненном цикле деятельности http://developer.android.com/guide/components/activities.html

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