android Button两次点击才显示内容

fantasiter 发布于 2014/09/18 11:31
阅读 2K+
收藏 0

我写了一段代码,目的是从网站获取内容,打印在EditText里,但是产生一个问题,Button需要两次点击,内容才能显示在EditText里,请教各位这是啥原因啊?

代码如下:



public class MainActivity extends Activity implements OnClickListener{
private static final String PCCS_URL="http://www.sina.com.cn";
GetInfo info ;
Button button ;
TextView tv;
String str ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);

info = new GetInfo(this);
button.setOnClickListener(this);



}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
tv = (TextView) findViewById(R.id.edittext);

new Thread()
{
@Override
public void run() {
System.out.println(info.getStringFromInputStream(PCCS_URL));
str = info.getStringFromInputStream(PCCS_URL);

}
}.start();
tv.setText(str);
break;
default:
break;
}



}


}


布局文件activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
  >


    <Button 
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ClickForMessage"
       
        />
    <TextView
        android:id="@+id/edittext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        
        />


</LinearLayout>


加载中
0
寒情漠漠
寒情漠漠

不是两次点击显示内容 是线程还没执行完吧 使用handler发送消息通知更新 

tv.setText(str);线程执行过程中这个已经执行了 而str值还没取回来 第二次点击str已经返回值了

mifan2009
mifan2009
正解
fantasiter
fantasiter
哈哈,原来是这样,和2楼的意思差不多呀,谢谢~
0
亓斌哥哥
亓斌哥哥
因为你从网络获取信息需要时间吧
fantasiter
fantasiter
3Q,明白了
0
jince
jince
setText不要写在监听事件里,用hander发消息来更新UI
fantasiter
fantasiter
明白了,谢谢~
返回顶部
顶部