无法访问静态变量android

时间:2014-11-21 14:59:32

标签: java android json static android-sqlite

概览;我需要从List创建一个json来存储在sqlLite数据库中。当我尝试创建json Eclipse时,我得到一个错误,即变量List必须是静态的。如果此变量更改为静态,我的应用程序显示不正确的结果,这不是一件好事。这是我创建json的类

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;
    }
}

1 个答案:

答案 0 :(得分:0)

你的字段corse和你的方法Create 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 ();