WebView 不显示内容
Posted
技术标签:
【中文标题】WebView 不显示内容【英文标题】:WebView not showing content 【发布时间】:2014-02-14 21:11:09 【问题描述】:全部。
我在 android 上的 WebView 上显示从 EditText 字段获取的 url 内容时遇到了一些问题。
我只想添加一个插入到 EditText 字段中的字符串,以打开另一个活动的 url,其中 webView 使用 Google 搜索 url 打开,在 EditText 中搜索给定的文本。
这是我的 MainActivity:
package com.hbt.activities;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.webkit.WebView;
import android.widget.EditText;
public class MainActivity extends Activity
EditText term;
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
term = (EditText) findViewById(R.id.searchtext);
query = term.getText().toString();
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setjavascriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
public void openWikipedia(View intview)
Intent intent = new Intent(this, Wikipedia.class);
intent.putExtra("query", query);
startActivity(intent);
public void openGoogle(View view)
Intent intent = new Intent(this, Google.class);
intent.putExtra("query", query);
startActivity(intent);
这是我的 Google.java:
package com.hbt.activities;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;
public class Google extends Activity
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google);
public void opengoogle (View webView1)
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
intview.loadUrl("https://www.google.pt");
String query = "";
Bundle bundle = getIntent().getExtras();
if (bundle == null)
Toast.makeText(getApplicationContext(), "Insert a search item.",Toast.LENGTH_LONG).show();
if (bundle != null)
query = bundle.getString("query");
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_BACK)
onBackPressed();
return true;
else
return super.onKeyDown(keyCode, event);
最后是 Wikipedia.java:
package com.hbt.activities;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.widget.Toast;
public class Wikipedia extends Activity
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wikipedia);
public void openWikipedia (View view)
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
String query = "";
Bundle bundle = getIntent().getExtras();
if (bundle == null)
Toast.makeText(getApplicationContext(), "Insert a search item.",Toast.LENGTH_LONG).show();
if (bundle != null)
query = bundle.getString("query");
String url = "en.wikipedia.org/wiki/Special:Search?search="+ query;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_BACK)
onBackPressed();
return true;
else
return super.onKeyDown(keyCode, event);
我真的不明白为什么 。任何帮助将不胜感激。提前致谢。
按照要求,这是布局 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/Wikipedia"
android:layout_
android:layout_
android:layout_above="@+id/Google"
android:layout_alignLeft="@+id/Google"
android:layout_alignRight="@+id/Google"
android:minEms="6"
android:onClick="openWikipedia"
android:text="@string/wikipedia" />
<Button
android:id="@+id/Google"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:onClick="openGoogle"
android:text="@string/google" />
<EditText
android:id="@+id/searchtext"
android:layout_
android:layout_
android:layout_above="@+id/Wikipedia"
android:layout_alignLeft="@+id/Wikipedia"
android:layout_alignRight="@+id/Google"
android:layout_marginBottom="18dp"
android:layout_marginTop="12dp"
android:hint="@string/text_to_search_" />
<WebView
android:id="@+id/webView1"
android:layout_
android:layout_
android:layout_above="@+id/searchtext"
android:layout_alignLeft="@+id/searchtext"
android:layout_alignParentTop="true" />
</RelativeLayout>
接下来是***布局 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webView2"
android:layout_
android:layout_
android:layout_alignParentTop="true"
/>
</RelativeLayout>
和谷歌 XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<WebView
android:id="@+id/webView1"
android:layout_
android:layout_
android:layout_alignParentTop="true" />
</RelativeLayout>
它们是不同的,因为我试图从多个方面处理这个问题。
【问题讨论】:
您是否在应用清单中添加了 INTERNET 权限? 是的,我做到了。在好的。您唯一需要的是 MainActivity 和 main_activity.xml。
其他东西,据我所知,你并不真的需要。
这是 MainActivity 的代码清单:
public class MainActivity extends Activity
EditText term;
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
term = (EditText) findViewById(R.id.searchtext);
query = term.getText().toString();
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
public void openWikipedia(View intview)
String url = "http://en.wikipedia.org/wiki/" + query;
this.intview.loadUrl(url);
public void openGoogle(View view)
String url = "https://www.google.pt?q="+query;
this.intview.loadUrl(url);
现在,主要活动的布局。与您拥有的原始版本相比,无需进行任何更改。但是,为了清楚起见,我将其发布。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
tools:context=".MainActivity" >
<Button
android:id="@+id/Wikipedia"
android:layout_
android:layout_
android:layout_above="@+id/Google"
android:layout_alignLeft="@+id/Google"
android:layout_alignRight="@+id/Google"
android:minEms="6"
android:onClick="openWikipedia"
android:text="Wikipedia" />
<Button
android:id="@+id/Google"
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:onClick="openGoogle"
android:text="Google" />
<EditText
android:id="@+id/searchtext"
android:layout_
android:layout_
android:layout_above="@+id/Wikipedia"
android:layout_alignLeft="@+id/Wikipedia"
android:layout_alignRight="@+id/Google"
android:layout_marginBottom="18dp"
android:layout_marginTop="12dp"
android:hint="Text to search" />
<WebView
android:id="@+id/webView1"
android:layout_
android:layout_
android:layout_above="@+id/searchtext"
android:layout_alignLeft="@+id/searchtext"
android:layout_alignParentTop="true" />
</RelativeLayout>
现在,一旦您按下按钮、Google 或 Wikipedia,您的 webview 应该开始加载显示内容。给它一些时间。
对于 Wikipedia: 我注意到,它有重定向,所以最后,它会在默认浏览器中打开新的 URL。你需要处理这个。
对于 Google: URL 可能设置不正确,但您可以查看它。
不过,WebView 无法正常加载的主要问题现在应该得到解决。
--------更新-------------- -----
现在,改变这些东西:
MainActivity.class
public class MainActivity extends Activity
EditText term;
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
term = (EditText) findViewById(R.id.searchtext);
query = term.getText().toString();
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
public void openWikipedia(View intview)
String url = "http://en.wikipedia.org/wiki/" + query;
this.intview.loadUrl(url);
public void openGoogle(View view)
Intent intent = new Intent(this, Google.class);
intent.putExtra("query", term.getText().toString());
startActivity(intent);
Google.class
public class Google extends Activity
String query;
WebView intview;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google);
opengoogle();
public void opengoogle()
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
intview.loadUrl("https://www.google.pt");
String query = "";
Bundle bundle = getIntent().getExtras();
if (bundle == null)
Toast.makeText(getApplicationContext(), "Insert a search item.",
Toast.LENGTH_LONG).show();
if (bundle != null)
query = bundle.getString("query");
intview.loadUrl("http://www.google.com?q=" + query);
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_BACK)
onBackPressed();
return true;
else
return super.onKeyDown(keyCode, event);
【讨论】:
就在现场。我现在只面临这样的问题,一旦我进入 Google 活动,如果我按下其中一个按钮,应用就会崩溃。【参考方案2】:在你的 onclick 方法中添加这个来获取 EditText 的当前值,然后发送意图:query = term.getText().toString();
public void openWikipedia(View intview)
query = term.getText().toString();
Intent intent = new Intent(this, Wikipedia.class);
intent.putExtra("query", query);
startActivity(intent);
public void openGoogle(View view)
query = term.getText().toString();
Intent intent = new Intent(this, Google.class);
intent.putExtra("query", query);
startActivity(intent);
在 onCreate() 中设置 webview:
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_google);
intview = (WebView) findViewById(R.id.webView1);
intview.getSettings().setBuiltInZoomControls(true);
intview.getSettings().setJavaScriptEnabled(true);
intview.getSettings().setDomStorageEnabled(true);
intview.loadUrl("https://www.google.pt");
String query = "";
Bundle bundle = getIntent().getExtras();
if (bundle == null)
Toast.makeText(getApplicationContext(), "Insert a search item.",Toast.LENGTH_LONG).show();
if (bundle != null)
query = bundle.getString("query");
应该可以的。
【讨论】:
感谢帮助,但不行。 Web 视图为空白。我在 onCreate 方法中有 term.getText().toString()。 在您的 oncreate 方法中,您还应该设置 Web 视图。 还没有变化。我已经看到代码有一些问题,但我真的不知道从哪里开始。我相信它不应该在 mainActivity 和 WikipediaActivity 上都有 openwikipedia()。但我不知道在哪里以及如何为 webview 提供我想要的地址。以上是关于WebView 不显示内容的主要内容,如果未能解决你的问题,请参考以下文章
清除内容:基础层与显示的用于清除 android 中的 webview 内容的 logcat 不匹配