我有一个没有绑定到任何在线数据库的LoginActivity
,我只通过编辑文本组件验证用户名来登录并移动到MainActivity
。LoginActivity
出现时,MainActivity
中的文本值为空,因此我创建了一个验证方法,当用户名为空,然后布局将移动到LoginActivity
,我这样做的目的是LoginActivity
不成为应用程序的主要布局。
验证MainActivity.java
中的用户:
private void checkUsername() {
Intent intent = getIntent();
if(intent.getExtras() != null){
String users = intent.getStringExtra(LoginActivity.EXTRA_USER);
txuser.setText(users);
//NullPointerException: Attempt to invoke virtual method 'long android.database.sqlite.SQLiteDatabase.insert(java.lang.String)
ContentValues cv = new ContentValues();
cv.put(Contract.UserEntry.NAME_COLUMN,users);
database.insert(Contract.UserEntry.TABLE_NAME,null,cv);
} else {
startActivity(new Intent(this, LoginActivity.class));
}
}
LoginActivity.java
private void loginUser() {
final String username;
username = user.getText().toString();
if (TextUtils.isEmpty(username)) {
Toast.makeText(this, "Name cannot be blank!", Toast.LENGTH_SHORT).show();
}
if (!cbAgree.isChecked()) {
Toast.makeText(this, "Login fails!", Toast.LENGTH_SHORT).show();
}
fabLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(LoginActivity.this, UtamaActivity.class);
intent.putExtra(EXTRA_USER, username);
startActivity(intent);
}
});
}
如何解决这个问题?,因为当我第一次打开应用程序时,LoginActivity
成功显示,但当我进入MainActivity
时,它立即强制关闭。我在checkUsername()
方法中包含了logcat注释
将Intent intent = new Intent(LoginActivity.this, UtamaActivity.class);
改为Intent intent = new Intent(LoginActivity.this, MainActivity.class);