2016-11-26 109 views
0

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

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

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

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

我认为放在哪里并不重要。但我试过它没有奏效。 –

+0

我写完();在调用wv.loadUrl(url)之后。现在工作正常。但不知道它是如何工作的..l0 –

0

我认为你应该重写此函数,而不是setOnKeyListener因为onkeylistener触发向下&两次了,可能做不必要的行为

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

或者您也可以onkeylistener做过滤

wv.setOnKeyListener(new OnKeyListener() 
    {       
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      //This is the filter 
      if (event.getAction()!=KeyEvent.ACTION_DOWN) 
       return true; 

      switch (keyCode) { 
       case KeyEvent.KEYCODE_BACK: 
        finish(); 
        Intent intent1 = new Intent(LinkActivity.this, MainActivity.class); 
        startActivity(intent1); 
        break; 
      } 

      return true; 
     } 

    }); 
+0

感谢您的回应,但它不工作。只是想让你知道MainActivity是一个listview。 –

+0

我写完();在调用wv.loadUrl(url)之后。现在工作正常。但不知道它是如何工作的..lol –

+0

检查我的新答案 –

1

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

黑屏只是你与你的,因为使用loadURL函数调用的Web浏览器

wv.loadUrl(url); 

没有网页加载LinkActivity如果不实现自己的客户端,并替换网址 是调用web浏览器的活动之外

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

使用这种与

wv.setWebViewClient(new MyWebViewClient()); 

所以在您的应用程序的URL请求的负载,而不是浏览器

+0

感谢您的解释。我是一个新手。还有一个问题..是否有必要使用WebViewClient?...如果我在加载网页后调用完成有什么不对吗? –

+0

有没有什么不对,它会只是摧毁你的活动,如果你想在webview中实现一些更多的逻辑WebViewClient是必要的 –

+0

谢谢你..我感谢。 –

相关问题