получение ответа об ошибке при вставке данных в базу данных области - PullRequest
0 голосов
/ 12 июня 2019

когда я вставляю данные в базу данных области, он отвечает Realm.Transaction.OnError, что для входной строки

В этом приложении я сохраняю данные, используя Realm для автономного режима, но он отвечает в Realm.Transaction.OnError (), чтоСписок сообщений «для входной строки»

public class messagelist extends AppCompatActivity {

private RecyclerView recyclerView;
private ActivityMessagelistBinding activityMessagelistBinding;
private Postmessagemodel postmessagemodel;
private RecyclerView.Adapter adapter;
private LinearLayoutManager linearLayoutManager;
private DividerItemDecoration dividerItemDecoration;
private messageadapter customAdapter;
private messagelist_datamanager dataManger;
private postmessage_datamanager postmessage_datamanager;
private List<messagemodel> newsList;

String tokens;
String sendmsg;
Realm realm;
String db_msg,db_auto;
int db_touserid;

 int toid;

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

    toid=getIntent().getExtras().getInt("clickid");
    Log.e("toid", String.valueOf(toid));

    SharedPreferences pref = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);

    tokens = pref.getString("sherdtoken", "");

    realm = Realm.getDefaultInstance();


    activityMessagelistBinding = DataBindingUtil.setContentView(this,R.layout.activity_messagelist);



    recyclerView = (RecyclerView) findViewById(R.id.recycle1);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    newsList = new ArrayList<>();

    customAdapter = new messageadapter(this, newsList);
    recyclerView.setAdapter(customAdapter);



    postmessagemodel = new Postmessagemodel();
    postmessage_datamanager = new postmessage_datamanager(this);

    activityMessagelistBinding.setPostmsg(postmessagemodel);




    dataManger = new messagelist_datamanager(this);


    activityMessagelistBinding.setPostbtn(new Post() {
        @Override
        public void onclick() {
            sendmsg = postmessagemodel.getMSG();
            Log.e("token", tokens+"message"+postmessagemodel.getMSG());

            if (isNetworkAvailable())
            {
                postmessage();
                Log.e("connected", String.valueOf(true));

                RealmResults<offlinemsg> allofflinemsg = realm.where(offlinemsg.class).findAll();

                if(allofflinemsg != null)
                {
                    for(offlinemsg f : allofflinemsg)
                    {
                        db_msg=f.getOfflinemsg_msg();
                        db_auto=f.getOfflinemsg_auth();
                        db_touserid=f.getOfflinemsg_touserid();

                    }
                }
            }

            else
            {
                writedb(sendmsg.toString(),tokens.toString(),toid);
            }


        }
    });



    getmessage();




}

private void writedb(final String sendmsg, final String tokens, final int toid)
{
    Log.e("msg",sendmsg+"autho"+tokens+"touserid"+toid);
    realm.executeTransactionAsync(new Realm.Transaction() {
        @Override
        public void execute(Realm bgRealm) {
            offlinemsg off_msg = bgRealm.createObject(offlinemsg.class,UUID.randomUUID().toString());
            off_msg.setOfflinemsg_msg(sendmsg);
            off_msg.setOfflinemsg_auth(tokens);
            off_msg.setOfflinemsg_touserid(toid);
        }
    }, new Realm.Transaction.OnSuccess() {
        @Override
        public void onSuccess() {
            Log.v("Database","data enterd");
        }
    }, new Realm.Transaction.OnError() {
        @Override
        public void onError(Throwable error) {
            Log.e("error",error.getMessage());
        }
    });
}

private boolean isNetworkAvailable() //check app is online or not
{
    ConnectivityManager manager =
            (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = manager.getActiveNetworkInfo();
    boolean isAvailable = false;
    if (networkInfo != null && networkInfo.isConnected()) {
        // Network is present and connected
        isAvailable = true;
    }
    return isAvailable;
}



public void getmessage()
{
    dataManger.sendVolleyRequest2(tokens,toid,messagelist.this, new messagelist_datavalue() {

        @Override
        public void setJsonDataResponse(JSONArray response) {


            try {


                messagemodel userModel = new messagemodel();

                for (int i = 0; i < response.length(); i++) {

                    JSONObject jsonObject = response.getJSONObject(i);
                    // Log.e("final", String.valueOf(i));
                    userModel.setFromUserId(jsonObject.getInt("fromUserId"));
                    userModel.setMessage(jsonObject.getString("message"));
                    userModel.setToUserId(jsonObject.getInt("toUserId"));
                    Log.e("message",userModel.getMessage());
                    newsList.add(userModel);
                }


            } catch (JSONException jsonDataResponse) {
                Log.e("error", String.valueOf(jsonDataResponse));

            }

            customAdapter.notifyDataSetChanged();


        }

        @Override
        public void setVolleyError(VolleyError volleyError) {
            Log.e("Volley", volleyError.toString());
        }
    });


}


private void postmessage() {

    postmessage_datamanager.sendVolleyRequest3(sendmsg,toid,tokens,messagelist.this,new postmessage_datavalue() {
        @Override
        public void setJsonDataResponse(JSONObject response) {
        }

        @Override
        public void setVolleyError(VolleyError volleyError) {

        }
    });


}

@Override
protected void onDestroy() {
    super.onDestroy();
    realm.close();
}

}

MyApplication (область)

public class MyApplication extends Application {
@Override
public void onCreate() {
    super.onCreate();
    Realm.init(this);
    RealmConfiguration configuration = new RealmConfiguration.Builder().name("realmdata.realm").build();
    Realm.setDefaultConfiguration(configuration);

}
}

offlinemsg (модель)

public class offlinemsg extends RealmObject {

@PrimaryKey
private int offlinemsg_id;

private String Offlinemsg_msg;
private String Offlinemsg_auth;
private int Offlinemsg_touserid;

public int getOfflinemsg_id() {
    return offlinemsg_id;
}

public void setOfflinemsg_id(int offlinemsg_id) {
    this.offlinemsg_id = offlinemsg_id;
}

public String getOfflinemsg_msg() {
    return Offlinemsg_msg;
}

public void setOfflinemsg_msg(String offlinemsg_msg) {
    Offlinemsg_msg = offlinemsg_msg;
}

public String getOfflinemsg_auth() {
    return Offlinemsg_auth;
}

public void setOfflinemsg_auth(String offlinemsg_auth) {
    Offlinemsg_auth = offlinemsg_auth;
}

public int getOfflinemsg_touserid() {
    return Offlinemsg_touserid;
}

public void setOfflinemsg_touserid(int offlinemsg_touserid) {
    Offlinemsg_touserid = offlinemsg_touserid;
}
}

, когда я вставляю данные в область, когда приложениеофлайн тогда он всегда отвечает Ошибка транзакции "для входной строки"

logcat

06-12 14:11:33.650 27543-27543/com.example.mayurpancholi.chat_mvvm E/MSG: k
06-12 14:11:34.884 27543-27543/com.example.mayurpancholi.chat_mvvm E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
06-12 14:11:34.884 27543-27543/com.example.mayurpancholi.chat_mvvm E/SpannableStringBuilder: SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length
06-12 14:11:35.248 27543-27543/com.example.mayurpancholi.chat_mvvm E/MSG: o
06-12 14:11:35.350 27543-27543/com.example.mayurpancholi.chat_mvvm E/MSG: ok
06-12 14:11:38.346 27543-27543/com.example.mayurpancholi.chat_mvvm E/token: 586ab021-b51a-46e2-95c9-1f54e5030267messageok
06-12 14:11:38.346 27543-27543/com.example.mayurpancholi.chat_mvvm E/msg: okautho586ab021-b51a-46e2-95c9-1f54e5030267touserid12258
06-12 14:11:38.354 27543-27543/com.example.mayurpancholi.chat_mvvm E/error: For input string: "2aa59e2d-6e82-4bf2-bcda-4758940d9eb5"
...