2016-05-24 9 views
1

Ich habe eine Aktivität A, die eine Schaltfläche hat. Wenn Sie auf diese Schaltfläche klicken, wird die Aktivität B gestartet. Aktivität B hat WebView in einem XML-Layout, das die HTML-Seite lädt, die lokal auf dem Gerät gespeichert ist. Die gesamte Webseite besteht aus mehreren CSS (schweres Material) und JSons (groß). Zu diesem Zeitpunkt beträgt die RAM-Nutzung etwa 90 MB. HTML hat Eingabefelder, die sowohl Text als auch Zahlen enthalten. Das Problem liegt nach dem 3-4-mal Öffnen und Schließen des Webview, wenn ich auf das Eingabefeld klicke, wird die Tastatur unsichtbar.Android Tastatur unsichtbar

Click here for screenshot

Das ist mein Aktivitätscode.

public class LaunchActivity extends Activity { 

WebView webView; 
private final int FILECHOOSER_RESULTCODE = 1; 
private Uri mCapturedImageURI = null; 
public String mCameraPhotoPath; 
String webViewUrl; 
public String mMediaType; 
public int flag = 0; 
public File imageStorageDir; 
Bundle bundle; 
String mode; 
public ProgressDialog progDailog; 

int questionToBeLaunch; 

Project project; 

public void onBackPressed() { 
} 

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.launch_survey); 

    // getting data from intent and creating the url to load. 

    webView = (WebView) findViewById(R.id.webView1); 

    setWebViewProperties(); 

    Map<String, String> header = new HashMap<String, String>(2); 
    header.put("Pragma", "no-cache"); 
    header.put("Cache-Control", "no-cache"); 
    webView.loadUrl(webViewUrl, header); 
} 

public void setWebViewProperties(){ 
    JavaScriptInterface jsInterface = new JavaScriptInterface(this); 
    // Javascript enabled on webview 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setAllowUniversalAccessFromFileURLs(true); 


    webView.addJavascriptInterface(jsInterface, "interface"); 

    // Other webview options 
    webView.getSettings().setLoadWithOverviewMode(true); 

    //webView.getSettings().setUseWideViewPort(true); 
    //Other webview settings 
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    webView.setScrollbarFadingEnabled(false); 
    webView.getSettings().setBuiltInZoomControls(true); 
    webView.getSettings().setDisplayZoomControls(false); 
    webView.getSettings().setAllowFileAccess(true); 
    webView.getSettings().setAllowFileAccessFromFileURLs(true); 
    webView.getSettings().setAllowUniversalAccessFromFileURLs(true); 
    webView.getSettings().setSupportZoom(true); 

    progDailog = new ProgressDialog(LaunchSurvey.this); 
    //Load url in webview 
    webView.setWebViewClient(new WebViewClient() { 


     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      progDailog.setMessage("Loading..."); 
      progDailog.setCanceledOnTouchOutside(false); 
      progDailog.setCancelable(false); 
      progDailog.show(); 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      webView.clearCache(true); 
     } 
    }); 
} 


@Override 
protected void onPause() { 
    super.onPause(); 
} 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    // webView.setOnTouchListener(null); 
    webView.removeAllViews(); 
    webView.clearCache(true); 
    webView.clearHistory(); 

    // clearCache(getApplicationContext()); 
    webView.destroy(); 
    webView = null; 
} 
} 
+0

Ich habe das gleiche Problem, suchte im Internet, versuchte verschiedene Dinge, aber nichts hat funktioniert. –

+0

Können Sie Ihren Code speziell mit dem Code teilen, den Sie für webview geschrieben haben? –

Antwort

0

Nachdem ich viele Tage gekämpft habe, habe ich endlich die Ursache für dein Problem herausgefunden. Es ist wahrscheinlich wegen der schweren Javascript-Code, die Webview analysiert werden muss. Versuchen Sie, es ein wenig zu erleichtern, und Sie sind alle eingestellt, die numerische Tastatur wird nicht unsichtbar.