当前位置: 代码迷 >> Android >> Android 异步处理有关问题
  详细解决方案

Android 异步处理有关问题

热度:40   发布时间:2016-04-28 04:45:27.0
Android 异步处理问题
  问题描述,放在一个button事件内,异步获取的数据能读取出来,如果不放在事件内着获取到的为空,出现空指针异常。
String string;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置Activity显示进度条
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
setHttpTask();
          
             Button button = (Button)findViewById(R.id.button);
             button.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
txTextView.setText(string);
}


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;
}



如果我没有用button事件,直接txTextView.setText(string);  就会提示空指针异常。请大家帮帮忙,小弟万分感谢!
------解决方案--------------------
因为异步没走完,还没给String赋值,主线程已经走到txTextView.setText(string);,所以报空。
在button的onclick可以是因为你去点的时候异步已经走完了
------解决方案--------------------
引用:
楼上的这个大哥,用什么方法能克服这种异常啊


用Handler或者AsyncTask在异步执行结束了再去更新UI
  相关解决方案