如何读取和显示在开始时设置为默认值的用户等级

我在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);
    }

}

请多多指教,在此先感谢您的帮助:)

lijunjiji 回答:如何读取和显示在开始时设置为默认值的用户等级

在您的DatabaseHelper类中创建这样的方法:

public String getRank(int id) {
    String query = "SELECT rank from " + TABLE_NAME + " where ID = " + id;
    SQLiteDatabase db = getReadableDatabase();

    try {
       return db.rawQuery(query,null).getString(cursor.getColumnIndex(rank));
    } catch (Exception e) {
       return "";
    }
}

Source

本文链接:https://www.f2er.com/3145192.html

大家都在问