橙汁不加冰
2018-09-08 07:57
采纳率: 25%
浏览 3.0k

android开发中子线程给全局变量无法赋值怎么解决~

简单点:
private JSONArray jsonArray;
new Thread(){
@Override
public void run()
{
这里有一段通过访问服务器获取JSONArray格式的返回值,我就不写了
jsonArray = JSON.parseArray(String.valueOf(buffer));
这里jsonArray报错,说不能给jsonArray赋值,有知道怎么解决的不?
}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 阳光纯粹 2018-09-08 23:43
    已采纳

    子线程里不能进行赋值操作

    private JSONArray jsonArray;
    new Thread(){
    @Override
    public void run()
    {
    这里有一段通过访问服务器获取JSONArray格式的返回值,我就不写了
    assignments(JSON.parseArray(String.valueOf(buffer)));
    这里jsonArray报错,说不能给jsonArray赋值,有知道怎么解决的不?
    }
    }

    //新建一个方法
    private void assignments(JSONArray jsonArrays){

                runOnUiThread(new Runnable(){
    
                   jsonArray=jsonArrays;
    
                }
                });
    

    }

    点赞 评论
  • Moluth 2018-09-08 09:52

    public class Test {
    private ArrayList list;
    public static void main(String s[]){
    new Thread(){
    @Override
    public void run() {
    list=new ArrayList();
    }
    }

    }
    

    }
    你是这个意思吗?

    点赞 评论
  • 冰个茶 2018-09-09 06:26

    亲,是可以赋值的。 应该是 JSON.parseArray这块出错了。 你能贴上具体的错误吗。

    点赞 评论
  • 佛一脚 2018-09-12 08:28

    应该是转json时出错了,正常来说,一般都需要捕获一下异常

                             try {
                                JSONObject jo = new JSONObject(s);
    
                            } catch (JSONException e) {
                                e.printStackTrace();
                            }
    
    点赞 评论

相关推荐 更多相似问题