首页 > 解决方案 > 保存具有 Gson 上下文的对象

问题描述

我被 Context 和 Gson 挡住了。我有一个使用 GSON 模块保存在列表中的产品类。一切正常。现在,我想将(Product 类的)所有字符串放入字符串资源文件中。我尝试使用 contextWrapper 如下所示,但不起作用。我也尝试通过将上下文作为参数传递,但也不起作用。我该如何解决?

产品类别:

public class Product extends ContextWrapper{
    private String mNumber;
    private String mDate;
    ...

    public Product(Context base) {
        super(base);
    }

    public void display(String data){
        String message = getString(R.string.message);    // access resources file
        ...
    }
}

然后,在一个活动中,我将产品添加到列表中并保存。但是这一行有一个问题:

新 Gson().toJson(productList);

public my_activity extends AppCompatActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        ...
        List<Produit> listeProduit = new ArrayList<>();
        Product product = new Product(my_activity.this);
        ...

        productList.add(0, product); 
        String jsonProduct = new Gson().toJson(productList);
        listeEditor.putString(PRODUCT_LIST, jsonProduct);
        listeEditor.apply();
    }
    ...
}

谢谢你的帮助 :-)

编辑:解决方案

一个简单的解决方案是将上下文作为函数的参数传递。

产品类别:

public class Product{
    private String mNumber;
    private String mDate;
    ...

    public void display(Context context, String data){
        String message = context.getString(R.string.message);    // access resources file
        ...
    }
}

然后,当我询问函数时,只需添加上下文:

public my_activity extends AppCompatActivity {
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.my_activity);
        ...
        String data = "This is data";
        List<Produit> listeProduit = new ArrayList<>();
        Product product = new Product();
        display(this,data);
        ...

        productList.add(0, product); 
        String jsonProduct = new Gson().toJson(productList);
        listeEditor.putString(PRODUCT_LIST, jsonProduct);
        listeEditor.apply();
    }
    ...
}

标签: javaandroidgsonandroid-context

解决方案


推荐阅读