从onClickListerner访问现有的json对象

时间:2019-11-12 12:42:44

标签: android json

在我的onCreate中,我从文件中将一个json字符串读入字符串myData中。然后将其加载到JSONObject allTheArray

在我的onCreate中,我有一个button_saveData.setOnClickListener(new View.OnClickListener()等。

我希望它更新JSONObject中的值,然后再次写入本地文件。

如果我在JSONObject myNewData内创建一个新的onClickListener并使用

myNewData.put(name,value) 

这有效。

但是,如果我尝试这样做,我将无法访问JSONObject allTheArray中的allTheArray.put(name,value)来使用onClickListener

问题:如何在JSONObject allTheArray中定义原始onCreate,以便可以在onClickListener

中访问

伪代码:

protected Void onCreate(etc){
    String myData = readFromFile(this,data);
    JSONObject allTheArray = null;
    allTheArray = new JSONObject(myData);
    String value_id = allTheArray.getString("id");        
    text_id.setText(value_id);
}

onClickListener {
    it is in here I want to update allTheArray
    allTheArray.put(name,value);(I cannot access allTheArray here)
    then save 
}

所以再次问:在onCreate中定义了JSONObject后,如何在JSONObject中使其可用。

1 个答案:

答案 0 :(得分:1)

要么allTheArray设置为全局

JSONObject allTheArray = null;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String myData = readFromFile(this, data);
    allTheArray = new JSONObject(myData);

    ....
}

将其标记为final

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String myData = readFromFile(this, data);
    final JSONObject allTheArray = new JSONObject(myData);

    ...

}