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);确保当点击返回键时,webview 被关闭。

于 2013-01-10T19:39:05.760 回答
0

尝试覆盖该方法:

    @Override
public void setCancelable(boolean cancelable) {

    super.setCancelable(false);
}

如果您的问题没有得到解决,那么请输入一些代码,以便我可以帮助您。

随时发表评论。

于 2013-01-10T03:50:59.730 回答