2016-09-24 10 views
0

Googleフォーム調査のキッチンラッパーを作成しようとしていましたが、これはおそらくアンドロイド開発の味を得る良い機会でしたそれは私の最初の試みです)。webview loadUrlは動作しなくなりましたgoogleフォームのコントロールがフォーカスを取得

私は一度、ユーザーがすでにフォーカスを与えていたことに気づいたとき、私は、ユーザーが自分のホームページ(各種調査へのリンクを含むインデックスページ)にジャンプすることを可能にするためにonBackPressed()をオーバーライドしています問題

調査フォームの入力フィールドに、私はもはやホームページ(loadUrl)をロードすることができませんでした。

この動作は、google.comなどの他のサイトの入力フィールドでは再現できませんでした。したがって、私の推測では、Googleフォームは複雑なjavascript(?)を使用していますが、これは後でloadUrlコールと混乱しますか?しかし、それは私の最初のJavaまたはAndroidの試みであり、私は暗闇の中で欲望を抱いていることを認めて恥ずかしいです。問題に

を示す

私のコードは、私は最低限に問題を示すコードをトリムダウンしました。どちらもloadUrl()が呼び出され、私が作成したサンプルのGoogleフォームが開きます。誰かが私の間違いを指摘して、この問題をどのように克服するかについて私にいくつかのリードを与えることができたらとてもうれしいでしょう!

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.ViewGroup; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.FrameLayout; 

public class MainActivity extends AppCompatActivity { 

    protected FrameLayout webViewPlaceholder; 
    protected WebView webView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Initialize the UI 
     initUI(); 
    } 

    protected void initUI() 
    { 
     // Retrieve UI elements 
     webViewPlaceholder = ((FrameLayout)findViewById(R.id.webViewPlaceholder)); 

     // Initialize the WebView if necessary 
     if (webView == null) 
     { 
      // Create the webview 
      webView = new WebView(this); 
      webView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); 
      webView.getSettings().setSupportZoom(true); 
      webView.getSettings().setJavaScriptEnabled(true); 


      // Load the URLs inside the WebView, not in the external web browser 
      webView.setWebViewClient(new WebViewClient()); 

      // Load a page 
      webView.loadUrl("https://docs.google.com/forms/d/e/1FAIpQLSdkbLwUPSPL1fx1oL8iMyLkBiMY591qjZ-xwCEf15fyX3ikYw/viewform"); 
     } 

     // Attach the WebView to its placeholder 
     webViewPlaceholder.addView(webView); 
    } 

    @Override 
    public void onBackPressed() { 
     webView.loadUrl("https://docs.google.com/forms/d/e/1FAIpQLSdkbLwUPSPL1fx1oL8iMyLkBiMY591qjZ-xwCEf15fyX3ikYw/viewform"); 
    } 

行動

それがあるとして、それは、サンプル調査票をロードします。アンドロイドのUIの戻るボタンを押すと、リロードされます(この例では簡単にするため、同じURLをホームページとして使用しています)。前方にナビゲートすると(アンケートの第2ステップ)、アンドロイドのUIの戻るボタンがカバーページに移動し、実際にloadUrl()が働いたことを示します。しかし、2番目のステップでテキストフィールド(またはラジオボタン)にフォーカスを当てると、アンドロイドUIの戻るボタンが機能しなくなります。

エラー

毎回私は(私は次のエラーを取得するに関係なく、それが動作するかどうかのかない)UIバックボタンを押します。

W/UnimplementedWebViewApi: Unimplemented WebView method onKeyDown called from: android.webkit.WebView.onKeyDown(WebView.java:2310) 

最低限必要なものにコードをダウンストリッピングする前に、I

Webview loadUrl won't work after user focuses on google forms form controls (error InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient) 

私は両方のエラーメッセージで複数の投稿を見つけましたが、関連するものは何もありません。どんな援助も非常に高く評価されるでしょう!

答えて

0

面白いこと、いい夜の睡眠がどのように役立つことができますか? それは価値があるのですが、私は以下のことを試してみました。今すぐ動作します:loadUrl()で新しいURLをリロードする前に、JavaScriptを無効にして、新しいページをロードするとすぐに再度有効にしてください!

webView.getSettings().setJavaScriptEnabled(false); 
webView.loadUrl("https://docs.google.com/forms/d/e/1FAIpQLSdkbLwUPSPL1fx1oL8iMyLkBiMY591qjZ-xwCEf15fyX3ikYw/viewform"); 
webView.getSettings().setJavaScriptEnabled(true); 

上記のコードはonBackPressed()

あります
関連する問題