0

我正在使用 Android 的 WebView,这样我就不必对缩放和滚动进行编程。我在资产文件夹中有我想要的网页,这是我的代码。每次我在模拟器中运行时都会收到错误,没有这样的文件或目录。我的问题是我需要改变什么才能使它起作用?

刚刚将我的 .java 更新为此,现在当我按下button1时我收到一个强制关闭,我的 XML 与下面的相同。

好的,我修复了最后一部分,现在发生的只是应用程序打开后出现空白屏幕。

package com.DS;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;

public class CheatMathActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);


final Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v){

            WebView webView = (WebView) findViewById(R.id.webView);
            webView.getSettings().setJavaScriptEnabled(true);
            webView.getSettings().setBuiltInZoomControls(true);
            webView.getSettings().setSupportZoom(true);
            webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm");

    } });  
} 

}    

好的,这是我的 XML,在添加 WebView 之前,我有一些家庭活动,它有两个按钮和一个 textview,一旦我添加了 WebView,图形布局显示的所有内容都是灰色屏幕,中间显示 WebView。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:orientation="vertical"
android:background="#4876ff" >
<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_marginTop="90dp"
    android:textColor="#0000ff"
    android:text="AP Calculus" />
 <Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/button1"
    android:layout_marginTop="38dp"
    android:text="More Coming Soon!" />
<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="87dp"
    android:textColor="#FFFAFA"
    android:text="If you have any questions or want to report a bug, feel free to email                        me at fgoyer3856@gmail.com
                    Thank you!" />
<TextView
    android:id="@+id/titleView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="37dp"
    android:gravity="center_vertical"
    android:text="Welcome to Math Cheat Sheet!"
    android:textAppearance="?android:attr/textAppearanceLarge" />
<WebView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" />
</RelativeLayout>
4

2 回答 2

2

好吧,如果您使用 Intent(如您在上面发布的那样),则会显示一个新的外部浏览器实例并将Uri集合加载到Intent而不是使用您自己的WebView. 为了实现您的要求,您必须获取对WebView活动布局内部的引用,然后加载您的页面。此外,如果你想从你的assets/文件夹中加载你的页面,你应该使用AssetManager,以及WebView.loadData()方法。您的onCreate()方法应如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  // get a reference to the webview
  final WebView wV = (WebView) findViewById(R.id.webview);

  // get page content from assets/your_page.html as a String
  InputStream is = getAssets().open("your_page.html");
  BufferedReader br = new BufferedReader(new InputStreamReader(is));
  StringBuffer sb = new StringBuffer();
  String line;
  while((line=br.readLine())!=null){
    sb.append(line);
    sb.append("\n");
  }
  is.close();
  final String html = sb.toString();

  // get a reference to the button
  Button button1 = (Button) findViewById(R.id.button1);
  button1.setOnClickListener(new View.OnClickListener(){
    public void onClick(View v){

      // load html string into your WebView
      wV.loadData( html, "text/html", "utf-8" );
    }
  });

}
于 2012-04-22T20:31:29.860 回答
1

在您的布局上放置一个 webview。并在您的活动中像这样加载您的 html 资产。

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setSupportZoom(true);
webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm");

并且不要忘记将文件stuffyoumustknowcoldforapcalc.htm放在名为assets.

package com.DS;

import java.io.File;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.webkit.WebView;

public class CheatMathActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


    final Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){

                webView = (WebView) findViewById(R.id.webView1);
                webView.getSettings().setJavaScriptEnabled(true);
                webView.getSettings().setBuiltInZoomControls(true);
                webView.getSettings().setSupportZoom(true);
                webView.loadUrl("file:///android_asset/stuffyoumustknowcoldforapcalc.htm");

        } });  
    } 


}  
于 2012-04-22T19:59:08.637 回答