我无法使用从上一个活动传递的链接加载页面。
代码如下
Build > Build Artifacts
所以,当我使用String url =“http://google.pl/nexus/4”时,一切似乎都没问题。而且我完全相信我的活动会从@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_webpage);
webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
/*Bundle b = getIntent().getExtras();
String url = b.getString(DeviceDetails.URL_KEY);*/
String url = getIntent().getStringExtra(DeviceDetails.URL_KEY);
//String url = "http://google.pl/nexus/4";
webView.setWebViewClient(new MyWebViewClient());
webView.loadUrl(url);
}
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
获取网址,因为我调试了它。
UPD1:
getIntent
以前的活动。保证传递url因为我调试了它。并且toast还会在String inputUrl = detUrlEditText.getText().toString();
Intent intent = new Intent(DeviceDetails.this, ShowWebPageActivity.class);
Bundle extras = new Bundle();
extras.putString(URL_KEY, inputUrl);
intent.putExtras(extras);
startActivity(intent);
中显示已传递的网址。
答案 0 :(得分:0)
请勿在方法view.loadUrl(url)
内调用shouldOverrideUrlLoading()
。
我在其他地方看过这样做的例子,我不明白为什么,这不应该是必要的。
当您处理URL并且WebView不应该加载它时, shouldOverrideUrlLoading()
应该返回true,并且当WebView继续加载URL时返回false。
如果您决定WebView应该打开不同的页面而不是URL参数,那么可以调用view.loadUrl()
。
以下是WebViewClient
子类的示例:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (handleWithSystemBrowser(url)) {
Uri webpage = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
}
return true; // tells WebView that we specifically handled the URL, so don't load it
}
return false; // go ahead and load it in the WebView
}
private boolean handleWithSystemBrowser(String url) {
// put your code here to check the URL
// return true if you want the device browser to display the URL
// return false if you want the WebView to load the URL
.
.
.
}
}