在下面的活动中,我正在显示一个网页。当我按后退按钮时我想去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;
}
});
}
}
答案 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);
}