Java 将网页文本放入文本视图(Android)
我想在安卓3.0上把网页上的文本放到文本视图中。我有以下代码:Java 将网页文本放入文本视图(Android),java,android,html,Java,Android,Html,我想在安卓3.0上把网页上的文本放到文本视图中。我有以下代码: public class Biografie extends Activity { private TextView outtext; private String HTML; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
public class Biografie extends Activity {
private TextView outtext;
private String HTML;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_biografie);
outtext= (TextView) findViewById(R.id.textview1);
try {
getHTML();
} catch (Exception e) {
e.printStackTrace();
}
outtext.setText("" + HTML);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.biografie, menu);
return true;
}
private void getHTML() throws ClientProtocolException, IOException
{
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://artistone.appone.nl/api/biografie.php?dataid=998"); //URL!
HttpResponse response = httpClient.execute(httpGet, localContext);
String result = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
result += line + "\n";
HTML = result;
}
}
}
我的文本视图返回“null”,而不是页面中的文本。请帮我把这个修好。谢谢。请将代码更改为:
while ((line = reader.readLine()) != null) {
result += line + "\n";
}
HTML = result;
试试这个:
outtext.setText(Html.fromHtml(Html))代码>
而不是在主线程中执行网络操作,我建议您在单独的线程中使用AsyncTask
执行此操作,问题是您得到的是NetworkOnMainThreadException
这是因为您正在主线程(活动的线程)上下载网络内容
相反,您需要使用后台线程来下载该内容,或者使用异步任务
解决此问题的简单代码:
final Handler handler = new Handler();
Thread thread = new Thread() {
public void run() {
try {
getHTML();
handler.post(new Runnable() {
@Override
public void run() {
outtext.setText("" + HTML);
}
});
} catch (Exception e) {
e.printStackTrace();
handler.post(new Runnable() {
@Override
public void run() {
outtext.setText(e.toString());
}
}
}
};
thread.start(); // I forgot to start the thread. sorry !
而不是:
try {
getHTML();
} catch (Exception e) {
e.printStackTrace();
}
outtext.setText("" + HTML);
另外,请看一看关于android线程的教程:当我这样做时,应用程序崩溃了。在getHtml()方法中,虽然有很多错误,但我想我把代码放错地方了?你能给我看看完整的新代码吗?谢谢你!您是否从getHTML获得异常?你测试的目标设备是什么?我在安卓4.0.2桌面上测试,对不起,我没有启动线程。。。请检查代码,现在它应该显示的东西,在任何费用