解决方案 »

  1.   

    txTextView 这个变量没看到你初始化呀,你在setHttpTask(); 上面进行初始化。
      

  2.   

    需要你检查一下click的时候,txTextView是否为null,string是否为null!
      

  3.   

    至少完整代码,和log贴出来,容易定位
      

  4.   

    因为异步没走完,还没给String赋值,主线程已经走到txTextView.setText(string);,所以报空。
    在button的onclick可以是因为你去点的时候异步已经走完了
      

  5.   


    用Handler或者AsyncTask在异步执行结束了再去更新UI
      

  6.   


    用Handler或者AsyncTask在异步执行结束了再去更新UI
    用Handler或者AsyncTask在异步执行结束了再去更新UI你说的是这个吗?
    @Override
    protected void onCancelled() {
    super.onCancelled();
    }
      

  7.   

    看看这篇文章你就懂了,你就看  ”4. 使用 Handler 结合多线程更新 UI“ 这段就行了
    http://blog.csdn.net/veryitman/article/details/6384641
      

  8.   

    Quote: 引用 10 楼 sagittarius1988 的回复:

    不是这个问题,我已经用了异步了,我这个是还没有到更新UI哪里就出错了
      

  9.   


    用Handler或者AsyncTask在异步执行结束了再去更新UI
    用Handler或者AsyncTask在异步执行结束了再去更新UI你说的是这个吗?
    @Override
    protected void onCancelled() {
    super.onCancelled();
    }private void setHttpTask() {
    httpTaskSos = new HttpTaskSos(mContext,xxx, xxx, callBack);
    httpTaskSos.execute();
    }private AsyncTaskCallBack callBack = new AsyncTaskCallBack() {@Override
    public void onTaskCallBack(String obj) {
    setObject(obj);
    }
    };private void setObject(String obj) {
    string = obj;
    }不知道HttpTaskSos,AsyncTaskCallBack这两个类具体怎么实现的,猜测
    public void onTaskCallBack(String obj) {
    txTextView.setText(obj);
    }
    这样应该就可以了
      

  10.   


    用Handler或者AsyncTask在异步执行结束了再去更新UI
    用Handler或者AsyncTask在异步执行结束了再去更新UI你说的是这个吗?
    @Override
    protected void onCancelled() {
    super.onCancelled();
    }private void setHttpTask() {
    httpTaskSos = new HttpTaskSos(mContext,xxx, xxx, callBack);
    httpTaskSos.execute();
    }private AsyncTaskCallBack callBack = new AsyncTaskCallBack() {@Override
    public void onTaskCallBack(String obj) {
    setObject(obj);
    }
    };private void setObject(String obj) {
    string = obj;
    }不知道HttpTaskSos,AsyncTaskCallBack这两个类具体怎么实现的,猜测
    public void onTaskCallBack(String obj) {
    txTextView.setText(obj);
    }
    这样应该就可以了
    我的HttpSos的具体功能是从网络上读取json数据,AsyncTaskCallBack这个只是一个接口。我感觉好像是你刚才说的:因为异步没走完,还没给String赋值,主线程已经走到txTextView.setText(string);,所以报空。
    在button的onclick可以是因为你去点的时候异步已经走完了
      

  11.   


    用Handler或者AsyncTask在异步执行结束了再去更新UI
    用Handler或者AsyncTask在异步执行结束了再去更新UI你说的是这个吗?
    @Override
    protected void onCancelled() {
    super.onCancelled();
    }private void setHttpTask() {
    httpTaskSos = new HttpTaskSos(mContext,xxx, xxx, callBack);
    httpTaskSos.execute();
    }private AsyncTaskCallBack callBack = new AsyncTaskCallBack() {@Override
    public void onTaskCallBack(String obj) {
    setObject(obj);
    }
    };private void setObject(String obj) {
    string = obj;
    }不知道HttpTaskSos,AsyncTaskCallBack这两个类具体怎么实现的,猜测
    public void onTaskCallBack(String obj) {
    txTextView.setText(obj);
    }
    这样应该就可以了
    我的HttpSos的具体功能是从网络上读取json数据,AsyncTaskCallBack这个只是一个接口。我感觉好像是你刚才说的:因为异步没走完,还没给String赋值,主线程已经走到txTextView.setText(string);,所以报空。
    在button的onclick可以是因为你去点的时候异步已经走完了如果是这个问题应该怎么解决
      

  12.   

    public void onTaskCallBack(String obj) {
    txTextView.setText(obj);
    }
    你这样试一下。我猜测HttpTaskSos是一个AsyncTask,它的onPostExecute()应该执行了callback的onTaskCallBack()方法