【发布时间】:2012-12-24 18:34:58
【问题描述】:
我正在做一个获取网站 HTML 代码的 Android 应用程序。我有一个 Webview 应该加载这个 HTML,但是当我运行我的程序时,我看不到我的“HTML”。
这是我的代码:
package com.example.getdonnees;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends Activity {
WebView webview;
Web web = new Web();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webview = (WebView)findViewById(R.id.webView1);
webview.getSettings().setJavaScriptEnabled(true);
try {
webview.loadData(web.getCode(), "text/html; charset=UTF-8", null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.example.getdonnees;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;
public class Web extends Activity {
WebView webview;
String s2 = "";
public String getCode() throws Exception{
URL oracle = new URL("http://www.google.com/");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine;
String s1 = "";
while ((inputLine = in.readLine()) != null)
s1 = s1 + inputLine;
in.close();
System.out.println(s1);
s2 = "<h1> test </h1>";
return s1;
}
}
如果我输入webview.loadData("<h1> Test </h1>", "text/html; charset=UTF-8", null); 它会起作用
如果我在 getCode() 中返回 s2,它就不起作用。
当然,如果我返回 s1,它就不起作用了。
我发现这部分会使应用程序崩溃。你知道为什么吗?
try {
in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
【问题讨论】:
-
你不能实例化一个
Activity类不要为你的Web类扩展Activity -
当您使用
Activity扩展Web 类时。它永远不会在内存中初始化,因为您从未在Web class中调用onCreate()。你根本不能instantiate Activity w/o onCreate()。所以尝试使用你的普通web Class。