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