无法访问静态变量android
概述;我需要从List创建一个json以存储在sqlLite数据库中。当我尝试创建json Eclipse时,我得到一个错误,即变量List必须是静态的。如果这个变量变为静态,我的应用程序显示不正确的结果,这不是一件好事。这是我创建JSON的类无法访问静态变量android
public class Soluzione {
public String durata;
public List<Corsa> corse;
public Soluzione() {
corse = new ArrayList<Corsa>();
}
@Override
public String toString() {
StringBuilder str = new StringBuilder();
for (Corsa corsa : corse) {
if (str.length() > 0)
str.append('\n');
str.append(corsa.toString());
}
return str.toString();
}
public static JSONObject CreateJSon(List<Corsa> corse)
{
JSONObject jObj = new JSONObject();
try
{
Corsa prima = Soluzione.corse.get(0);
Corsa ultima = Soluzione.corse.get(corse.size()-1);
jObj.put("oraPartenza", prima.oraPartenza);
jObj.put("oraArrivo", ultima.oraArrivo);
jObj.put("partenza", prima.partenza);
jObj.put("arrivo", ultima.arrivo);
} catch (Exception e) { e.printStackTrace(); }
return jObj;
}
}
它在您的字段corse和您的方法的参数之间不明确创建JSON。
不要让方法静态和删除参数
public JSONObject CreateJSon()
{
JSONObject jObj = new JSONObject();
try
{
Corsa prima = Soluzione.corse.get(0);
Corsa ultima = Soluzione.corse.get(corse.size()-1);
jObj.put("oraPartenza", prima.oraPartenza);
jObj.put("oraArrivo", ultima.oraArrivo);
jObj.put("partenza", prima.partenza);
jObj.put("arrivo", ultima.arrivo);
} catch (Exception e) { e.printStackTrace(); }
return jObj;
}
编辑:
,所以如果你想保持CreateJSon静,重命名参数名称,以避免歧义,则:
Soluzione soluzione = new Soluzione();
Soluzione.CreateJSon (soluzione.corse);
或者你想删除静态属性,你可以删除参数,你可以这样做:
Soluzione soluzione = new Soluzione();
soluzione.CreateJSon();
mmmh .... okok,但从sqLite?而且,我不能让静态因为改变我的结果在列表视图。 – 2014-11-21 15:18:22
所以不要让它变成静态的。为什么你的方法需要是静态的?我编辑了我的答案以适合你的情况。 – 2014-11-21 15:19:37
,因为数据库要求我将其设为静态。跟着我,如果我使静态科西嘉,我的结果在列表视图将全部相同。我将用10行相同的列表查看。这不是我想要的。 – 2014-11-21 15:22:04
我很确定,如果你刚刚删除了'static'并且实际读取了'static'的含义并且意味着:https://docs.oracle.com/javase/tutorial/java/javaOO/classvars,这将有所帮助。 html – EpicPandaForce 2014-11-21 15:03:26
我知道这意味着什么,但大概一周我找不到解决方案!所以我在这里问。 – 2014-11-21 15:18:51