相关疑难解决方法(0)

Android SharedPreferences如何保存/存储对象

我们需要在许多地方获取用户对象,其中包含许多字段.登录后,我想保存/存储这些用户对象.我们怎样才能实现这种情况?

我不能这样存储它:

SharedPreferences.Editor prefsEditor = myPrefs.edit();
prefsEditor.putString("BusinessUnit", strBusinessUnit);
Run Code Online (Sandbox Code Playgroud)

android sharedpreferences

188
推荐指数
6
解决办法
17万
查看次数

gson.toJson()抛出StackOverflowError

我想从我的对象生成一个JSON字符串:

Gson gson = new Gson();
String json = gson.toJson(item);
Run Code Online (Sandbox Code Playgroud)

每次我尝试这样做,我都会收到此错误:

14:46:40,236 ERROR [[BomItemToJSON]] Servlet.service() for servlet BomItemToJSON threw exception
java.lang.StackOverflowError
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:473)
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:347)
    at com.google.gson.stream.JsonWriter.value(JsonWriter.java:440)
    at com.google.gson.internal.bind.TypeAdapters$7.write(TypeAdapters.java:235)
    at com.google.gson.internal.bind.TypeAdapters$7.write(TypeAdapters.java:220)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:200)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60)
    at com.google.gson.Gson$FutureTypeAdapter.write(Gson.java:843)
Run Code Online (Sandbox Code Playgroud)

这些是我的BomItem类的属性:

private int itemId;
private Collection<BomModule> modules;
private boolean deprecated;
private String partNumber;
private String description; //LOB
private int quantity;
private String unitPriceDollar;
private String unitPriceEuro;
private String discount; 
private String totalDollar;
private …
Run Code Online (Sandbox Code Playgroud)

java stack-overflow json object gson

75
推荐指数
5
解决办法
7万
查看次数

使用parcelable将项目存储为共享首选项?

我有一些对象,位置,在我的应用程序中存储在ArrayList中,并使用parcelable在活动之间移动它们.该对象的代码如下所示:

public class Location implements Parcelable{

private double latitude, longitude;
private int sensors = 1;
private boolean day;
private int cloudiness;

/*
Måste ha samma ordning som writeToParcel för att kunna återskapa objektet.
 */
public Location(Parcel in){
    this.latitude = in.readDouble();
    this.longitude = in.readDouble();
    this.sensors = in.readInt();
}

public Location(double latitude, double longitude){
    super();
    this.latitude = latitude;
    this.longitude = longitude;
}

public void addSensors(){
    sensors++;
}


public void addSensors(int i){
    sensors = sensors + i;
}

+ Some getters and setters. …
Run Code Online (Sandbox Code Playgroud)

java storage android serializable

21
推荐指数
2
解决办法
2万
查看次数

在共享首选项中保存自定义对象

我想myObject在共享首选项中保存自定义对象。此自定义对象具有ArrayList<anotherCustomObj>. 这anotherCustomObj有主要变量。

这两个myObjectanotherCustomObj是parcelable。

我尝试了下面的代码将其转换为字符串并保存:

String myStr = gson.toJson(myObject);
editor.putString(MY_OBJ, myStr);
Run Code Online (Sandbox Code Playgroud)

但它给出了 RunTimeException。

编辑:下面是 logcat 屏幕截图。 在此处输入图片说明

anotherCustomObj 实现:

package com.objectlounge.ridesharebuddy.classes;

import java.io.File;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Parcel;
import android.os.Parcelable;
import android.preference.PreferenceManager;
import android.util.Log;

import com.google.gson.annotations.SerializedName;
import com.objectlounge.ridesharebuddy.R;

public class RS_SingleMatch implements Parcelable {

    private static final String RIDESHARE_DIRECTORY = …
Run Code Online (Sandbox Code Playgroud)

java android gson sharedpreferences

5
推荐指数
1
解决办法
6829
查看次数