我在SQLite数据库中添加了一个新列COL_5,它称为“等级”。每个注册的用户的排名都设置为“ Australopithecus afarensis”,应显示在UserPanelactivity.java中。我要做的是设法显示用户的昵称(SignInactivity),但是在检查当前等级并将其显示在屏幕上时遇到了麻烦。
代码如下:
DatabaseHelper:
package com.pracainzynierska.inzynierka;
import android.content.Contentvalues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.TextView;
import androidx.annotation.Nullable;
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME="register.db";
public static final String TABLE_NAME="registeruser";
public static final String COL_1 ="ID";
public static final String COL_2 ="username";
public static final String COL_3 ="mail_address";
public static final String COL_4 ="password";
public static final String COL_5 = "rank";
//public static final String COL_6 = "dailytip";
public DatabaseHelper(@Nullable Context context) {
super(context,DATABASE_NAME,null,1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE registeruser (ID INTEGER PRIMARY KEY AUTOINCREMENT,username TEXT,mail_address TEXT,password TEXT,rank TEXT DEFAULT 'Australopithecus afarensis')");
}
@Override
public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public long addUser(String user,String password,String mail_address) {
SQLiteDatabase db = this.getwritabledatabase();
Contentvalues contentvalues = new Contentvalues();
contentvalues.put("username",user);
contentvalues.put("password",password);
contentvalues.put("mail_address",mail_address);
long res = db.insert("registeruser",contentvalues);
db.close();
return res;
}
public boolean checkUser(String username,String password)
{
String[] columns = {COL_1};
SQLiteDatabase db = getReadableDatabase();
String selection = COL_2 + "=?" + " and " + COL_4 + "=?";
String[] selectionArgs = {username,password};
Cursor cursor = db.query(TABLE_NAME,columns,selection,selectionArgs,null);
int count = cursor.getcount();
cursor.close();
db.close();
if(count>0)
return true;
else
return false;
}
}
SignInactivity:
package com.pracainzynierska.inzynierka;
import androidx.appcompat.app.AppCompatactivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.facebook.CallbackManager;
public class SignInactivity extends AppCompatactivity {
private TextView register_text;
public static CallbackManager callbackManager;
DatabaseHelper db;
@Override
protected void onCreate(Bundle savedInstanceState) {
db = new DatabaseHelper(this);
callbackManager = CallbackManager.Factory.create();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_in);
final EditText usernameEditText = findViewById(R.id.username);
final EditText passwordEditText = findViewById(R.id.password);
final Button loginButton = findViewById(R.id.login);
final ProgressBar loadingProgressBar = findViewById(R.id.loading);
usernameEditText.requestFocus();
register_text = findViewById(R.id.register_text);
register_text.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
Intent registerIntent = new Intent(SignInactivity.this,Registeractivity.class);
startactivity(registerIntent);
}
});
loginButton.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
String user = usernameEditText.getText().toString().trim();
String pwd = passwordEditText.getText().toString().trim();
Boolean res = db.checkUser(user,pwd);
if(res == true)
{
Intent intent = new Intent(SignInactivity.this,UserPanelactivity.class);
Intent intentPopUp = new Intent(SignInactivity.this,PopUpactivity.class);
intent.putExtra("username",user);
startactivity(intent);
startactivity(intentPopUp);
Toast.makeText(SignInactivity.this,"Welcome " + user + "!",Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(SignInactivity.this,"There is a problem with singing in!",Toast.LENGTH_SHORT).show();
usernameEditText.setText("");
passwordEditText.setText("");
usernameEditText.requestFocus();
}
}
});
}
}
UserPanelactivity:
package com.pracainzynierska.inzynierka;
import androidx.appcompat.app.AppCompatactivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class UserPanelactivity extends AppCompatactivity {
private Button settings_btn,progress_btn,dailychallenge_btn,premium_btn,logout_btn,training_btn;
private TextView NickNameText,rankText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_panel);
String username = getIntent().getStringExtra("username");
//String rank = getIntent().getStringExtra("rank");
NickNameText = findViewById(R.id.nickname);
NickNameText.setText(username);
//here I'd like to display rank
rankText = findViewById(R.id.rank);
rankText.setText(rank);
settings_btn = findViewById(R.id.settings_user_panel_button);
settings_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
Settings();
}
});
progress_btn = findViewById(R.id.progress_button);
progress_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
MyProgress();
}
});
dailychallenge_btn = findViewById(R.id.challenge_button);
dailychallenge_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
DailyChallenge();
}
});
premium_btn = findViewById(R.id.premium_button);
premium_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
Premium();
}
});
logout_btn = findViewById(R.id.logout_button);
logout_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
BackToMenu();
finish();
}
});
training_btn = findViewById(R.id.start_freetraining_button);
training_btn.setOnClicklistener(new View.OnClicklistener() {
@Override
public void onClick(View v) {
Training();
}
});
}
private void Training() {
Intent intent = new Intent(this,FillTheTextactivity.class);
startactivity(intent);
}
private void BackToMenu() {
Intent intent = new Intent(this,Mainactivity.class);
startactivity(intent);
}
private void Premium() {
Intent intent = new Intent(this,Premiumactivity.class);
startactivity(intent);
}
private void DailyChallenge() {
Intent intent = new Intent(this,DailyChallengeactivity.class);
startactivity(intent);
}
private void MyProgress() {
Intent intent = new Intent(this,MyProgressactivity.class);
startactivity(intent);
}
private void Settings() {
Intent intent = new Intent(this,Settingsactivity.class);
startactivity(intent);
}
}
请多多指教,在此先感谢您的帮助:)