这是我的登录应用。 我的应用程序一直在努力。
程序代码:
package ru.foodrobot.wma;
import android.os.Looper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.BaseJsonHttpResponseHandler;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestHandle;
import com.loopj.android.http.RequestParams;
import com.loopj.android.http.TextHttpResponseHandler;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import cz.msebera.android.httpclient.Header;
import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.Realm;
import io.realm.RealmList;
import io.realm.RealmResults;
public class MainActivity extends AppCompatActivity {
private Realm mRealm;
private Realm mRealmInstance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart(){
mRealm.init(this);
RealmConfiguration config = new RealmConfiguration.Builder().build();
mRealm.setDefaultConfiguration(config);
mRealmInstance = mRealm.getInstance(config);
//the code was here - 29.12.17
//**********
try {
RealmResults User = mRealmInstance.where(Config.class).equalTo("name", "token").findAllAsync();
if (User.size() > 0) {
String nameOfUser = User.get(0).toString();
} else if (User.size() == 0) {
/* Log.e("query","query size is "+User.size()); */
}
} catch (Exception e) {
e.printStackTrace();
}
AsyncHttpClient client = new AsyncHttpClient();
RequestParams rp = new RequestParams();
rp.add("email", "r.amerzyanov@foodrobot.ru");
rp.add("password", "123456");
RequestHandle post = client.post("https://wms-amerzyanov.foodrobot.ru/api/v1/auth", rp, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// Root JSON in response is an dictionary i.e { "data : [ ... ] }
// Handle resulting parsed JSON response here
try {
String tokenString = response.getString("token");
mRealm.beginTransaction();
Config myConfig = mRealm.createObject(Config.class);
myConfig.name = "token";
myConfig.tokenValue = tokenString;
mRealm.commitTransaction();
} catch (NullPointerException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {
// called when response HTTP status is "4XX" (eg. 401, 403, 404)
}
});
}
}
我的logcat看起来像这样:
12-29 13:54:30.042 19758-19758 / ru.foodrobot.wma E / AndroidRuntime:FATAL EXCEPTION:main 过程:ru.foodrobot.wma,PID:19758 java.lang.RuntimeException:无法启动活动ComponentInfo {ru.foodrobot.wma / ru.foodrobot.wma.MainActivity}:io.realm.exceptions.RealmMigrationNeededException:由于以下错误,需要迁移: - 添加了“Config”类。 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1477) 在android.os.Handler.dispatchMessage(Handler.java:102) 在android.os.Looper.loop(Looper.java:154) 在android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 引起:io.realm.exceptions.RealmMigrationNeededException:由于以下错误,需要迁移: - 添加了“Config”类。 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method) 在io.realm.internal.OsSharedRealm。(OsSharedRealm.java:184) at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:254) 在io.realm.BaseRealm。(BaseRealm.java:124) 在io.realm.BaseRealm。(BaseRealm.java:93) 在io.realm.Realm。(Realm.java:153) 在io.realm.Realm.createInstance(Realm.java:424) 在io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:342) 在io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:282) 在io.realm.Realm.getInstance(Realm.java:353) 在ru.foodrobot.wma.MainActivity.onStart(MainActivity.java:60) 在android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248) 在android.app.Activity.performStart(Activity.java:6696) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2628
答案 0 :(得分:1)
您的应用程序崩溃了,因为您更改了数据的结构。
如果您不想丢失已存储的数据,则必须配置迁移以处理此类情况。但是,如果您仍在开发中并且您的方案经常更改,则可以使用:
2t9loNQH90kzJcsFCODdigxfp325aq4z
有关如何配置迁移的详细信息: https://realm.io/docs/java/latest/#migrations
答案 1 :(得分:0)
您可以尝试删除自己的应用并重新安装。此外,您可以使用以下代码替换您的RealmConfiguration:
RealmConfiguration config = new RealmConfiguration
.Builder()
.deleteRealmIfMigrationNeeded()
.build();