我无法使用从上一个 Activity 传递的链接加载页面。
代码如下
@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;
}
}
所以,当我使用 String url="http://google.pl/nexus/4"时,一切似乎都很好。而且我完全确定我的 Activity 从 getIntent
获取了 url,因为我调试了它。
UPD1:
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);
以前的 Activity 。保证能传url,因为我调试过。 toast 还在 ShowWebPageActivity
中显示传递的 url。
最佳答案
不要在方法 shouldOverrideUrlLoading()
中调用 view.loadUrl(url)
。
我在其他地方看到过这样做的例子,但我不明白为什么,这不应该是必要的。
shouldOverrideUrlLoading()
应在您处理 URL 且 WebView 不应加载它时返回 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
.
.
.
}
}
关于android - 如何从 Android 中的 Bundle 加载 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30900209/