Java 将域添加到android应用程序时出现StackOverflower错误

Java 将域添加到android应用程序时出现StackOverflower错误,java,android,json,stack-overflow,realm,Java,Android,Json,Stack Overflow,Realm,我将in-Realm添加到我的android应用程序中,以保存JSON信息,以便更轻松、更快速地获取,突然出现了一个StackOverflowerError,但是错误显示了GSON java文件中的行,我不明白是什么导致了这个错误。当使用断点逐行执行时,错误似乎来自于行json=gson.toJson(companyInfo)或之后在我的java文件的SaveInfo()中。我是否正确地添加了领域并正确地写入了领域?有什么想法吗 Java文件 import android.content.Int

我将in-Realm添加到我的android应用程序中,以保存JSON信息,以便更轻松、更快速地获取,突然出现了一个
StackOverflowerError
,但是错误显示了GSON java文件中的行,我不明白是什么导致了这个错误。当使用断点逐行执行时,错误似乎来自于行
json=gson.toJson(companyInfo)或之后在我的java文件的
SaveInfo()
中。我是否正确地添加了领域并正确地写入了领域?有什么想法吗

Java文件

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;


import com.google.gson.Gson;

import io.realm.Realm;


public class NewLocation extends ActionBarActivity {

    public EditText editCoName;
    public EditText editCoAddress;
    public EditText editCoContact;
    public EditText editSqFt;
    public EditText editTaxed;
    public EditText editConcerns;
    public String json;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_location);


        findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SaveInfo();
                Intent i = new Intent(NewLocation.this, RoomList.class);
                i.putExtra("json", json);
                startActivity(i);
            }
        });

        editCoName = (EditText) findViewById(R.id.CoName);
        editCoAddress = (EditText) findViewById(R.id.CoAddress);
        editCoContact = (EditText) findViewById(R.id.CoContact);
        editSqFt = (EditText) findViewById(R.id.SqFt);
        editTaxed = (EditText) findViewById(R.id.Taxed);
        editConcerns = (EditText) findViewById(R.id.Concerns);

        SaveInfo();
    }

    @Override
    protected void onResume() {
        super.onResume();
        LoadInfo();
    }

    @Override
    protected void onPause() {
        super.onPause();
        SaveInfo();
    }

    public void SaveInfo() {
        Gson gson = new Gson();
        Realm realm = Realm.getInstance(this);
        CompanyInfo companyInfo = new CompanyInfo();

        companyInfo.setName(editCoName.getText().toString());
        companyInfo.setAddress(editCoAddress.getText().toString());
        companyInfo.setContact(editCoContact.getText().toString());
        companyInfo.setTaxed(editTaxed.getText().toString());
        companyInfo.setSqFt(editSqFt.getText().toString());
        companyInfo.setConcerns(editConcerns.getText().toString());

        json = gson.toJson(companyInfo);



        realm.beginTransaction();
        realm.createOrUpdateObjectFromJson(CompanyInfo.class, json);
        realm.commitTransaction();
    }

    public void LoadInfo() {
        Realm realm = Realm.getInstance(this);

        CompanyInfo companyInfo = realm.where(CompanyInfo.class).findFirst();
        if (companyInfo != null) {
            editCoName.setText(companyInfo.getName());
            editCoAddress.setText(companyInfo.getAddress());
            editCoContact.setText(companyInfo.getContact());
            editTaxed.setText(companyInfo.getTaxed());
            editSqFt.setText(companyInfo.getSqFt());
            editConcerns.setText(companyInfo.getConcerns());
        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_new_location, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();


        switch(item.getItemId())
        {
            case R.id.home:
                startActivity(new Intent(getApplicationContext(), MainPage.class));
                break;
        }
        return super.onOptionsItemSelected(item);
    }

}
类数据

public class CompanyInfo extends RealmObject{

    private String Name;
    private String Address;
    private String Contact;
    private String sqFt;
    private String taxed;
    private String concerns;
    private RealmList<Rooms> rooms;

    public RealmList<Rooms> getRooms() {
        return rooms;
    }

    public void setRooms(RealmList<Rooms> rooms) {
        this.rooms = rooms;
    }

    public String getName() {
        return Name;
    }

    public String getAddress() {
        return Address;
    }

    public String getContact() {
        return Contact;
    }

    public String getSqFt() {
        return sqFt;
    }

    public String getTaxed() {
        return taxed;
    }

    public String getConcerns() {
        return concerns;
    }

    public void setName(String coName) {
        this.Name = coName;
    }

    public void setAddress(String coAddress) {
        this.Address = coAddress;
    }

    public void setContact(String coContact) {
        this.Contact = coContact;
    }

    public void setSqFt(String sqFt) {
        this.sqFt = sqFt;
    }

    public void setTaxed(String taxed) {
        this.taxed = taxed;
    }

    public void setConcerns(String concerns) {
        this.concerns = concerns;
    }

}
公共类CompanyInfo扩展RealmObject{
私有字符串名称;
私有字符串地址;
私人字符串联系人;
私有字符串sqFt;
私人字符串征税;
私人关系;
私人RealmList房间;
公共RealmList getRooms(){
返回室;
}
公共无效设置室(RealmList室){
这个房间=房间;
}
公共字符串getName(){
返回名称;
}
公共字符串getAddress(){
回信地址;
}
公共字符串getContact(){
回接;
}
公共字符串getSqFt(){
返回sqFt;
}
公共字符串getTaxed(){
纳税申报表;
}
公共字符串getConcerns(){
返回关注点;
}
public void setName(字符串coName){
this.Name=coName;
}
公共无效设置地址(字符串共同地址){
this.Address=coAddress;
}
public void setContact(String coContact){
this.Contact=coContact;
}
公共无效设置QFT(字符串sqFt){
this.sqFt=sqFt;
}
公共无效设置已征税(字符串已征税){
这是被征税的;
}
公共关注点(字符串关注点){
这个。关注点=关注点;
}
}
错误

08-04 13:06:12.288 12487-12487/com.customledsupply.ledudit E/AndroidRuntime﹕ 致命异常:主
流程:com.customledsupply.ledudit,PID:12487
栈溢出
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:381)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:376)
位于com.google.gson.internal.$gson$Types.resolve($gson$Types.java:356)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.getBoundFields(ReflectTypeAdapterFactory.java:141)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.create(ReflectTypeAdapterFactory.java:83)
位于com.google.gson.gson.getAdapter(gson.java:359)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.getFieldAdapter(ReflectTypeAdapterFactory.java:122)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.access$100(ReflectTypeAdapterFactory.java:46)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory$1。(ReflectTypeAdapterFactory.java:92)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.CreateBundfield(ReflectTypeAdapterFactory.java:91)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.getBoundFields(ReflectTypeAdapterFactory.java:142)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.create(ReflectTypeAdapterFactory.java:83)
位于com.google.gson.gson.getAdapter(gson.java:359)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.getFieldAdapter(ReflectTypeAdapterFactory.java:122)
位于com.google.gson.internal.bind.ReflectTypeAdapterFactory.access$100(ReflectTypeAdapterFactory.java:46)
在com.google.gson。
08-04 13:06:12.288  12487-12487/com.customledsupply.ledaudit E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.customledsupply.ledaudit, PID: 12487
    java.lang.StackOverflowError
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:381)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:376)
            at com.google.gson.internal.$Gson$Types.resolve($Gson$Types.java:356)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:141)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83)
            at com.google.gson.Gson.getAdapter(Gson.java:359)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83)
            at com.google.gson.Gson.getAdapter(Gson.java:359)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142)
            at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83)
            at com.google.gson.Gson.getAdapter(Gson.java:359)
            at com.googl
Gson gson = new GsonBuilder()
        .setExclusionStrategies(new ExclusionStrategy() {
            @Override
            public boolean shouldSkipField(FieldAttributes f) {
                return f.getDeclaringClass().equals(RealmObject.class);
            }

            @Override
            public boolean shouldSkipClass(Class<?> clazz) {
                return false;
            }
        })
        .create();

String json = "{ name : 'John', email : 'john@corporation.com' }";
User user = gson.fromJson(json, User.class);