【问题标题】:Activity gets destroyed when webview has webviewclient当 webview 有 webviewclient 时,Activity 被销毁
【发布时间】:2012-11-19 20:25:49
【问题描述】:

这是我的代码:

public class AuthActivity extends Activity {
public static final String REDIRECT_URL = "redirectUrl";
WebView webview;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    webview = new WebView(this);
    setContentView(webview);

    webview.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView view, String url) {
            parseUrl(url);
            super.onPageFinished(view, url);
        }
        @Override
        public void onReceivedError(WebView view, int errorCode,
                String description, String failingUrl) {
            Toast.makeText(getApplicationContext(), description, Toast.LENGTH_LONG).show();
            super.onReceivedError(view, errorCode, description, failingUrl);
        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return true;
        }
    });
    webview.clearCache(true);
    webview.clearHistory();
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.removeAllCookie();

    String url = VKPoster.getAuthUrl( );
    webview.loadUrl(url);
}

private void parseUrl(String url) {
    try {
        if(url==null)
            return;
        if(!url.contains("error=")){
            Intent intent=new Intent();
            intent.putExtra(REDIRECT_URL, url);
            setResult(Activity.RESULT_OK, intent);
        }
        finish();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

当 Activity 在没有 webviewclient 的情况下开始加载页面时,它会停止运行,但是当设置 webviewclient 时,它就可以正常工作了。

谁能向我解释这种行为?

【问题讨论】:

    标签: android android-activity webview webviewclient


    【解决方案1】:

    问题出在这段代码中(当我发布问题时,我已经看到了。这绝对是吹的)

    private void parseUrl(String url) {
    try {
        if(url==null)
            return;
        if(!url.contains("error=")){
            Intent intent=new Intent();
            intent.putExtra(REDIRECT_URL, url);
            setResult(Activity.RESULT_OK, intent);
        }
        /* I finished app every time page loaded! What a shame */
        finish();
    } catch (Exception e) {
        e.printStackTrace();
    }
    

    }

    【讨论】:

    • 碰巧是我们中最好的 :) 你应该选择你的答案作为接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多