Realm veritabanını kullanarak kullanıcı giriş ve kayıt yapmaya çalışıyorum. Birisi bana lütfen yardımcı olabilir Boş bir nesne başvurusuKayıt ve Giriş Realm Kullanarak
üzerine 'io.realm.Realm.beginTransaction() geçersiz' sanal yöntemi çağırmak için
Girişimi şu şekildedir: Ancak bir hata alıyorum? Aşağıda
benim kayıt için benim kodudur ve giriş ..Kod Kaydı için:
İştepublic class RegisterActivity extends AppCompatActivity {
private static final String TAG = "Register";
EditText mEditTextFirstName, mEditTextLastName, mEditTextEmail,mEditTextPassword,mEditTextConfirmPassword;
Button mButtonSignUp;
Realm realm;
private MyRealmObject myRealmObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
try {
realm = Realm.getInstance(getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mEditTextFirstName = (EditText) findViewById(R.id.edtfirstname);
mEditTextLastName= (EditText) findViewById(R.id.edtlastname);
mEditTextEmail = (EditText) findViewById(R.id.edtemail);
mEditTextPassword = (EditText) findViewById(R.id.edtpassword);
mEditTextConfirmPassword = (EditText) findViewById(R.id.edtconfirm);
mButtonSignUp = (Button) findViewById(R.id.btnsignup);
mButtonSignUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mEditTextFirstName.length() == 0) {
showSnackBar("Enter FirstName");
mEditTextFirstName.requestFocus();
} else if (mEditTextLastName.length() == 0) {
showSnackBar("Enter LastName");
mEditTextEmail.requestFocus();
} else if (mEditTextEmail.length() ==0) {
showSnackBar("Enter a valid email");
mEditTextEmail.requestFocus();
}else if (mEditTextPassword.length() ==0) {
showSnackBar("Enter a valid password");
mEditTextPassword.requestFocus();
}else if (mEditTextConfirmPassword.length() ==0) {
showSnackBar("Enter a valid Password");
mEditTextPassword.requestFocus();
} else {
try{
realm.beginTransaction();
myRealmObject = realm.createObject(MyRealmObject.class);
myRealmObject.setFirstName(mEditTextFirstName.getText().toString());
myRealmObject.setLastName(mEditTextLastName.getText().toString());
myRealmObject.setEmail(mEditTextEmail.getText().toString());
myRealmObject.setPassword(mEditTextPassword.getText().toString());
myRealmObject.setConfirmPassword(mEditTextConfirmPassword.getText().toString());
realm.commitTransaction();
showSnackBar("Save Success");
} catch (RealmPrimaryKeyConstraintException e){
e.printStackTrace();
showSnackBar("User found on db.");
}
}
}
});
}
private void showSnackBar(String msg) {
try {
Snackbar.make(findViewById(R.id.relativeregister), msg, Snackbar.LENGTH_SHORT).show();
} catch (NullPointerException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
}
}
Giriş için benim kodudur ..
public class LoginActivity extends AppCompatActivity {
private static final String TAG = "Home";
private EditText mEditTextEmail, mEditTextPassword;
private TextView txtlogin;
TextView Create;
private Realm realm;
private MyRealmObject myRealmObject;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
try {
realm = Realm.getInstance(getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mEditTextEmail = (EditText) findViewById(R.id.edtemail);
mEditTextPassword = (EditText) findViewById(R.id.edtpswrd);
txtlogin = (TextView) findViewById(R.id.txtlogin);
Create = (TextView) findViewById(R.id.txtcreate);
Create.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(LoginActivity.this, RegisterActivity.class);
startActivity(i);
}
});
txtlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mEditTextEmail.length() == 0) {
showSnackBar("Enter EMAIL");
mEditTextEmail.requestFocus();
} else if (mEditTextPassword.length() == 0) {
showSnackBar("Enter password");
mEditTextPassword.requestFocus();
Intent i = new Intent(LoginActivity.this, MainActivity.class);
startActivity(i);
}
}
private boolean checkUser(String email,String password) {
RealmResults<MyRealmObject> realmObjects = realm.where(MyRealmObject.class).findAll();
for (MyRealmObject myRealmObject : realmObjects) {
if (email.equals(myRealmObject.getEmail()) && password.equals(myRealmObject.getPassword())) {
Log.e(TAG, myRealmObject.getEmail());
return true;
}
}
Log.e(TAG, String.valueOf(realm.where(MyRealmObject.class).contains("Email", email)));
return false;
}
private void showSnackBar(String msg) {
try {
Snackbar.make(findViewById(R.id.relativelogin), msg, Snackbar.LENGTH_SHORT).show();
} catch (NullPointerException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}
}
});
}
Benim RealmObject Sınıfı:
public class MyRealmObject extends RealmObject {
private String FirstName, LastName,ConfirmPassword;
@PrimaryKey
private String Email;
private String Password;
public MyRealmObject() {
}
public String getFirstName() {
return FirstName;
}
public void setFirstName(String FirstName) {
this.FirstName = FirstName;
}
public String getLastName() {
return LastName;
}
public void setLastName(String LastName) {
this.LastName = LastName;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
this.Email = Email;
}
public String getPassword() {
return Password;
}
public void setPassword(String password) {
this.Password = password;
}
public String getConfirmPassword() {
return getConfirmPassword();
}
public void setConfirmPassword(String confirmPassword) {
this.ConfirmPassword = confirmPassword;
}
}
Birisi yanlış nerede bana yol. peşin
Teşekkür .. Realm.getInstance(context)
kullanılarak kullanım dışı olduğunu
Merhaba Ishita, Neden bölge örneğinizin kodunuza göre boş olacağını açık bir neden göremiyorum. Sorular: 1) burada null olup olmadığını görmek için realm = Realm.getInstance (getApplicationContext()) sonra kodu ayıklama var mı? 2) Hangi Realm sürümünü kullanıyorsunuz? 0.88.2 üzerinde Realm.getInstance kullanımdan kaldırılmıştır, eğer 0.88.2 üzerinde değilseniz, upgdate'i deneyin ve bir RealmConfiguration ile kullanmayı deneyin veya uygulamanızda varsayılan yapılandırmayı ayarlayın. Bkz. Https://realm.io/docs/java/latest/ ve bölüm "Varsayılan RealmConfiguration". Nasıl gideceğini bana bildirin. Ben savedInstanceState = null bölge = null olsun –
merhaba @Nerevar Birazdan alemine sonra kod hata ayıklama = Realm.getInstance (getApplicationContext(), null bir sorun yaşıyorum Şimdi, sorunun oluştuğu satırı biliyorsunuz.Örnek örneğinizi oluşturma şeklinizi değiştirmenizi şiddetle öneririm Yalnızca bunu test edip edemeyeceğinizi test etmek için şunu deneyebilirsiniz: RealmConfiguration realmConfig = new RealmConfiguration.Builder (getActivity()) build(); Realm realm = Realm.getInstance (realmConfig); Bu kodun sadece test için olması gerektiğini unutmayın. Eğer bu işe yararsa, uygulamayı daha iyi ve daha net hale getirebilirsiniz, önceki yorumda gönderdiğim bağlantıya bakın. Kullandığınız sürüme bakarsanız ve sizin için uygun değilse mi? – Ishita
Hey yine Tamam, bilerek; –