您好我正在使用WebView
实现开发Android应用程序。
我关注了official android tutorial。
在eclipse中构建项目时,我没有遇到错误,但是在运行应用程序时:
应用程序已意外停止工作
答案 0 :(得分:17)
您的Java文件应该是这样的:
public class WebViewSampleActivity extends Activity {
WebView wb;
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wb=(WebView)findViewById(R.id.webView1);
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setLoadWithOverviewMode(true);
wb.getSettings().setUseWideViewPort(true);
wb.getSettings().setBuiltInZoomControls(true);
wb.getSettings().setPluginState(WebSettings.PluginState.ON);
wb.getSettings().setPluginsEnabled(true);
wb.setWebViewClient(new HelloWebViewClient());
wb.loadUrl("http://www.examplefoo.com");
}
}
你的xml文件应该是这样的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_gravity="center">
<WebView
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" />
</LinearLayout>
在<uses-sdk><uses-sdk/>
之后的清单中使用以下内容:
<uses-permission android:name="android.permission.INTERNET"/>
答案 1 :(得分:2)
WebView曾经在我们的应用程序中显示网页。让我们制作一个WebView并加载任何网站
在 AndroidManifest.XML
中提供权限<uses-permission android:name="android.permission.INTERNET"/>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
MainActivity.Java
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity
{
private WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview=(WebView)findViewById(R.id.webview);
//loads androidride homepage to webview
webview.loadUrl("https://www.androidride.com");
}
}
答案 2 :(得分:1)
WebView是一种在应用程序中显示网页的视图。您还可以指定HTML字符串,并使用WebView在应用程序中显示它。
示例教程:http://www.viralandroid.com/2015/09/android-webview-tutorial-with-examples.html
activity_main.xml文件
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
MainActivity.java文件
import android.webkit.WebView;
...
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.viralandroid.com");
答案 3 :(得分:0)
你走了:
LinearLayout root = new LinearLayout(this);
root.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
WebView wv = new WebView(this);
wv.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://www.google.com");
root.addView(wv);
setContentView(root);
将此代码放入onCreate-Method中。 并且不要忘记在Android Manifest中设置权限Internet。
答案 4 :(得分:0)
class WebViewClass extends WebViewClient {
final ProgressBar loadProgress;
final WebView wv;
WebViewClass(WebView webView, ProgressBar progressBar) {
this.wv = webView;
this.loadProgress = progressBar;
}
public void onPageFinished(WebView view, String url) {
wv.setVisibility(View.VISIBLE);
loadProgress.setVisibility(View.INVISIBLE);
view.clearCache(true);
}
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
wv.loadData("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + "<center>" + getString(R.string.erroopsproblem) + ".</center>", "text/html", "UTF-8");
}
}
现在在onCreate()上使用此类,如
WebView wv = (WebView) findViewById(R.id.webview);
wv.setWebViewClient(new WebViewClient());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.setScrollBarStyle(View.VISIBLE);
wv.getSettings().setBuiltInZoomControls(true);
wv.getSettings().setSupportZoom(true);
wv.getSettings().setLoadWithOverviewMode(true);
wv.getSettings().setUseWideViewPort(true);
wv.getSettings().setAllowContentAccess(true);
wv.loadUrl(Dest);
wv.setVisibility(View.INVISIBLE);
wv.setWebViewClient(new WebViewClass(wv, loadProgress));
答案 5 :(得分:0)
Xml文件
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/myweb"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
java文件
WebView web = (WebView) findViewById(R.id.myweb);
web.setWebViewClient(new WebViewClient());
web.getSettings().setLoadsImagesAutomatically(true);
web.getSettings().setJavaScriptEnabled(true);
web.getSettings().setBuiltInZoomControls(true);
web.getSettings().setSupportZoom(true);
web.getSettings().setLoadWithOverviewMode(true);
web.getSettings().setUseWideViewPort(true);
web.getSettings().setAllowContentAccess(true);
web.loadUrl("https://www.technolifehacker.com");
web.setWebViewClient(new WebViewClient(){
答案 6 :(得分:0)
除了@ghost答案之外,如果您希望Web视图像浏览器一样具有完整的功能,即可以前进和后退,则需要覆盖活动的onBackPressed方法,如下所示
@Override
public void onBackPressed() {
if (webView.canGoBack()) {
webView.goBack();
} else {
super.onBackPressed();
}
}
答案 7 :(得分:-1)
你必须