在webview中按后退按钮时出现空白屏幕

时间:2016-11-26 02:05:31

标签: android webview

在下面的活动中,我正在显示一个网页。当我按后退按钮时我想去MainActivity.class但是它显示空白屏幕然后如果我再次按下后退按钮然后它显示我MainActivity.However现在我自己解决了它。我做的是我写完();就在wv.loadUrl(url)之后。现在工作正常。任何人都可以解释为什么以前没有工作。

public class LinkActivity extends AppCompatActivity {
    WebView wv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_link);
        wv = (WebView)findViewById(R.id.webView);
        Intent intent = getIntent();

        String url = intent.getStringExtra("url");
        wv.loadUrl(url);
        wv.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View view, int i, KeyEvent keyEvent) {
                switch (i)
                {
                    case KeyEvent.KEYCODE_BACK:
                        finish();
                        Intent intent1 = new Intent(LinkActivity.this,MainActivity.class);
                        startActivity(intent1);
                        break;

                }
                return false;
            }
        });
    }

}

3 个答案:

答案 0 :(得分:1)

好的,我现在明白你的问题了

空白屏幕只是您的LinkActivity,没有网页加载,因为您的loadurl函数调用了Web浏览器

wv.loadUrl(url);

如果您没有实现自己的客户端并覆盖网址 在您的活动之外调用Web浏览器

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return false;
    }
}

一起使用
wv.setWebViewClient(new MyWebViewClient());

以便url请求在您的应用程序中加载而不是浏览器

答案 1 :(得分:0)

finish()应该在startActivity之后。试试这个:

Intent intent1 = new Intent(LinkActivity.this,MainActivity.class);
startActivity(intent1);
finish();

答案 2 :(得分:0)

我认为你应该覆盖这个函数而不是setOnKeyListener,因为onkeylistener触发了两次down&它可能会造成不必要的行为

b

或者你可以对onkeylistener进行过滤

@Override
public void onBackPressed() {
    finish();
    Intent intent1 = new Intent(LinkActivity.this, MainActivity.class);
    startActivity(intent1);    
}
相关问题