2

私のアプリでは、ユーザーがユーザー名/パスワードを入力する WebView をロードします。この WebView をロードするには、ページが別のネットワーク呼び出しを行う必要があるため、ユーザーが誤って WebView の外側をクリックした場合に、WebView を閉じたくありません。

これはDialogで実行できることは知っていますが(のようdialog.setCanceledOnTouchOutside(true);に:)、webviewの同様のメカニズムが見つかりませんでした。

ありがとう!

コードは次のとおりです。

@SuppressLint("SetJavaScriptEnabled")
public class LoginDialogFragment extends DialogFragment {

private static final String TAG = LoginDialogFragment.class.getSimpleName();

View mainView = null;
WebView webView = null;
OnLoginSucceeded loginSucceeded = null;

ProgressBar progressBar = null;

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    mainView = inflater.inflate(R.layout.webview, container, false);

    if (getDialog() != null)
        getDialog().setTitle(getString(R.string.login));

    webView = (WebView) mainView.findViewById(R.id.webview);

    //display the progress bar
    progressBar = (ProgressBar) mainView.findViewById(R.id.user_profile_loading_progress);
    progressBar.setVisibility(View.VISIBLE);

    //turn caching off
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginsEnabled(true);

    webView.setWebChromeClient(new WebChromeClient() {
    });

    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) {
            Log.i(TAG, "URL received in onCreateView's onPageStarted is: " + url);
            new HandleRequest().execute(url);
        }

        @Override
        public void onPageFinished(WebView view, String url) {
        }
    });

    new FetchLoginFormTask().execute();

    return mainView;
}
4

2 に答える 2

1

ここで答えを見つけましgetDialog().setCanceledOnTouchOutside(false);た。戻るキーがクリックされたときにWebビューが閉じられるようにするために使用しました。

于 2013-01-10T19:39:05.760 に答える
0

メソッドをオーバーライドしてみてください:

    @Override
public void setCancelable(boolean cancelable) {

    super.setCancelable(false);
}

これで問題が解決しない場合は、コードを入力してください。

コメントはお気軽に。

于 2013-01-10T03:50:59.730 に答える