我正在尝试学习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;时,我希望得到相同的字符串。 我怎么能这样做?
答案 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();
}
}