public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try
{
StringBuffer sb = new StringBuffer();
String url = "http://10.0.2.2:8080/JSON_server/JSONDemoServlet";
String body = getContent(url);
JSONArray array = new JSONArray(body);
for (int i = 0; i < array.length(); i++)
{
JSONObject obj = array.getJSONObject(i);
sb.append("id:").append(obj.getInt("id")).append("\t");
sb.append("name:").append(obj.getString("name")).append("\r\n");
sb.append("gender:").append(obj.getString("gender")).append("\t");
sb.append("email:").append(obj.getString("email")).append("\r\n");
sb.append("----------------------\r\n");
}
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText("Hello");
} catch (Exception e){}
为什么textView.setText放这里,就无法设置textView的内容。运行效果如下图
textView的text内容并没改变。如果把TextView textView = (TextView) findViewById(R.id.textView);textView.setText("Hello");这两行代码放到setContentView(R.layout.main);后面就可以改变text的内容。这是为什么?
8 个解决方案
#1
一般不应该在oncreate 之类的函数中做耗时太长的操作的。
估计是时间太长,系统让计算停止了。
放到线程中做网络和解析操作吧。
估计是时间太长,系统让计算停止了。
放到线程中做网络和解析操作吧。
#2
setContentView(R.layout.main)未设之前,根本就不知道R.id.textView为何物
#3
findViewById(R.id.textView);textView.setText("Hello");
必须放在setContentView(R.layout.main)后面
#4
正解啊
#5
我把findViewById(R.id.textView);放到setContentView(R.layout.main)后面,然后把textView.setText("Hello");放到catch (Exception e){}后面后可以了,不过,我现在要把JSON解析出来的内容显示到textView中,于是在for那个循环语句后用textView.setText(sb.toString())为什么不起作用?就算随意显示一个字符都不行。这是什么原因?
#6
您没有从网络取到数据,程序卡死,后面的不执行
建议使用1楼的方法
建议使用1楼的方法
#8
呵呵,问题已经解决了,我已经明白原理了,谢谢指点。谢谢各位热心人士帮忙
#1
一般不应该在oncreate 之类的函数中做耗时太长的操作的。
估计是时间太长,系统让计算停止了。
放到线程中做网络和解析操作吧。
估计是时间太长,系统让计算停止了。
放到线程中做网络和解析操作吧。
#2
setContentView(R.layout.main)未设之前,根本就不知道R.id.textView为何物
#3
findViewById(R.id.textView);textView.setText("Hello");
必须放在setContentView(R.layout.main)后面
#4
正解啊
#5
我把findViewById(R.id.textView);放到setContentView(R.layout.main)后面,然后把textView.setText("Hello");放到catch (Exception e){}后面后可以了,不过,我现在要把JSON解析出来的内容显示到textView中,于是在for那个循环语句后用textView.setText(sb.toString())为什么不起作用?就算随意显示一个字符都不行。这是什么原因?
#6
您没有从网络取到数据,程序卡死,后面的不执行
建议使用1楼的方法
建议使用1楼的方法
#7
#8
呵呵,问题已经解决了,我已经明白原理了,谢谢指点。谢谢各位热心人士帮忙