使用JSON从另一个函数获取值

时间:2015-10-30 12:00:30

标签: java

我正在尝试学习Java,现在我遇到了一些问题。我试图从一个方法到另一个方法获得一个值:

public void Save(View v){
        Contador c = new Contador();
        c.nContador = "123";
        c.descricao = "Teste";
        c.tipoTarifa = "Tri";

        c.leituras = new ArrayList<Leitura>();

        Leitura l1 = new Leitura();
        l1.tipoLeitura = "HP";
        l1.valorLeitura = "321";

        Leitura l2 = new Leitura();
        l1.tipoLeitura = "HV";
        l1.valorLeitura = "654";

        c.leituras.add(l1);
        c.leituras.add(l2);

        Gson gson = new Gson();
        String json = gson.toJson(c);
        System.out.print(json);
    }

public void Read(View v){
    Toast
            .makeText(this, "I want the json here", Toast.LENGTH_LONG)
            .show();
    }

所以我有2个按钮:一个用于保存,一个用于阅读。当我按&#34; Save&#34;方法&#34;保存&#34;被调用,它创建字符串json。 当我点击按钮&#34;阅读&#34;时,我希望得到相同的字符串。 我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

注意:请使用Java Convention命名类,属性和方法。方法名称应为大小写混合,第一个字母为小写,每个内部单词的首字母大写。

方法1

您可以在save()中返回生成的字符串,并在read()中调用它来获取它。

public String save(View v) {
    // beginning of implementation ommitted for brevity
    Gson gson = new Gson();
    String json = gson.toJson(c);
    return json;
}

public void read(View v) {
    String json = save(v);
    Toast.makeText(this, json, Toast.LENGTH_LONG).show();
}

建议您执行此操作,因为您要在save()方法中为read()创建依赖关系。

方法2

与之前的方法相同,但没有依赖关系,使用辅助方法。

public String save(View v) {
    // beginning of implementation ommitted for brevity
    Gson gson = new Gson();
    String json = gson.toJson(c);
    return json;
}

public void read(View v, String json) {
    Toast.makeText(this, json, Toast.LENGTH_LONG).show();
}

public void process(View v) {
    String json = save(v);
    read(v, json);
}

我仍然建议这样做,因为你不会在任何其他地方输入字符串,并且每当你调用process()来获取read()所需的输入时,你会间接调用save()

方法3

设置包含已创建字符串的类属性,并在read()中使用它。

public class StackOverflowExample {

    private String json;

    public String save(View v) {
        // beginning of implementation ommitted for brevity
        Gson gson = new Gson();
        json = gson.toJson(c); // save the JSON in your class attribute
        System.out.print(json);
    }

    public void read(View v) {
        Toast.makeText(this, json, Toast.LENGTH_LONG).show();
    }

}