Отображение имени пользователя из базы данных sqlite после входа в textView - PullRequest
0 голосов
/ 23 мая 2019

Я новичок в разработке приложений для Android. Я хочу отобразить имя пользователя из моей таблицы в базе данных SQLite после успешного входа в файл layout_main.xml с именем действия HomeActivity.Код для моего textview в моем макете activity_main.xml

   <TextView
        android:id="@+id/NamaProfile"
        android:layout_width="120dp"
        android:layout_height="20dp"
        android:layout_marginStart="160dp"
        android:layout_marginTop="30dp"
        android:text="TextView" />

А вот код:

DBHelper

package com.demo.androidgudang;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

/**
 * Created by Administrator on 5/5/2016.
 */
public class DbHelper extends SQLiteOpenHelper {
    public static final String TAG = DbHelper.class.getSimpleName();
    public static final String DB_NAME = "myapp.db";
    public static final int DB_VERSION = 1;

    public static final String USER_TABLE = "users";
    public static final String COLUMN_ID = "_id";
    public static final String COLUMN_USERNAME = "username";
    public static final String COLUMN_EMAIL = "email";
    public static final String COLUMN_PASS = "password";


    /*
    create table users(
        id integer primary key autoincrement,
        email text,
        password text);
     */
    public static final String CREATE_TABLE_USERS = "CREATE TABLE " + USER_TABLE + "("
            + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
            + COLUMN_USERNAME + " TEXT,"
            + COLUMN_EMAIL + " TEXT,"
            + COLUMN_PASS + " TEXT);";


    public DbHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE_USERS);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + USER_TABLE);
        onCreate(db);
    }

    /**
     * Storing user details in database
     * */
    public void addUser(String username,String email,String password) {
        SQLiteDatabase db = this.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put(COLUMN_USERNAME, username);
        values.put(COLUMN_EMAIL, email);
        values.put(COLUMN_PASS, password);

        long id = db.insert(USER_TABLE, null, values);
        db.close();

        Log.d(TAG, "user inserted" + id);
    }

    public boolean getUser(String username, String email, String pass){
        //HashMap<String, String> user = new HashMap<String, String>();
        String selectQuery = "select * from  " + USER_TABLE + " where " +
                COLUMN_USERNAME + " = " + "'"+username+"'" + " and " + COLUMN_PASS + " = " + "'"+pass+"'";
        if(email != null)
            selectQuery += "and " + COLUMN_EMAIL + " = " + "'"+email+"'";
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);
        // Move to first row
        cursor.moveToFirst();
        if (cursor.getCount() > 0) {

            return true;
        }
        cursor.close();
        db.close();

        return false;
    }


}

HomeActivity

package com.demo.androidgudang;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class HomeActivity extends AppCompatActivity {
    TextView txt_profile_name;
    SharedPreferences sharedpreferences;
    Intent intent;

    private Button btnLogout;
    private Session session;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        session = new Session(this);
        if(!session.loggedin()){
            logout();
        }

        btnLogout = (Button)findViewById(R.id.btnLogout);
        btnLogout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                logout();
            }
        });
    }

    private void logout(){
        session.setLoggedin(false);
        finish();
        startActivity(new Intent(HomeActivity.this,LoginActivity.class));
    }
}

Session.java

package com.demo.androidgudang;

import android.content.Context;
import android.content.SharedPreferences;

/**
 * Created by Administrator on 5/5/2016.
 */
public class Session {
    SharedPreferences prefs;
    SharedPreferences.Editor editor;
    Context ctx;

    public Session(Context ctx){
        this.ctx = ctx;
        prefs = ctx.getSharedPreferences("myapp", Context.MODE_PRIVATE);
        editor = prefs.edit();
    }

    public void setLoggedin(boolean logggedin){
        editor.putBoolean("loggedInmode",logggedin);
        editor.commit();
    }

    public boolean loggedin(){
        return prefs.getBoolean("loggedInmode", false);
    }
}

LoginActivity.java

package com.demo.androidgudang;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{

    private Button login;
    private EditText etUsername, etPass;
    private DbHelper db;
    private Session session;
    TextView RegisterDisini;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);

            db = new DbHelper(this);
            session = new Session(this);
            login = (Button)findViewById(R.id.btnLogin);
            etUsername = (EditText)findViewById(R.id.etUsername);
            etPass = (EditText)findViewById(R.id.etPass);
            login.setOnClickListener(this);
            RegisterDisini = (TextView) findViewById(R.id.RegisterDisini);

            RegisterDisini.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent registerHere = new Intent(LoginActivity.this, RegisterActivity.class);
                    startActivity(registerHere);
                }
            });

            if(session.loggedin()){
                startActivity(new Intent(LoginActivity.this,HomeActivity.class));
                finish();
            }
        }

        @Override
        public void onClick(View v) {
            switch(v.getId()){
                case R.id.btnLogin:
                    login();
                    break;
                default:
            }
        }

        private void login(){
            String username = etUsername.getText().toString();
            String pass = etPass.getText().toString();

            if(db.getUser(username,null,pass)){
                session.setLoggedin(true);
                startActivity(new Intent(LoginActivity.this, HomeActivity.class));
                finish();
            }else{
                Toast.makeText(getApplicationContext(), "Wrong username/password",Toast.LENGTH_SHORT).show();
            }
        }
    }

1 Ответ

0 голосов
/ 23 мая 2019

Просто создайте класс для хранения userName и loginSession 1.

public class UserInfo {
    String name;
    boolean isLogin;

    public UserInfo(String name, boolean isLogin) {
        this.name = name;
        this.isLogin = isLogin;
    }
}

Изменить getUser ()

public UserInfo  getUser(String username, String email, String pass){
            //HashMap<String, String> user = new HashMap<String, String>();
            //UserInfo  userinfo;
            String selectQuery = "select * from  " + USER_TABLE + " where " +
                    COLUMN_USERNAME + " = " + "'"+username+"'" + " and " + COLUMN_PASS + " = " + "'"+pass+"'";
            if(email != null)
                selectQuery += "and " + COLUMN_EMAIL + " = " + "'"+email+"'";
            SQLiteDatabase db = this.getReadableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);
            // Move to first row
            cursor.moveToFirst();
            if (cursor.getCount() > 0) {

                return  new UserInfo  (cursor.getString(cursor.getColumnIndex(COLUMN_USERNAME)),true);
            }
            cursor.close();
            db.close();

            return new UserInfo(null,false);
        }

Изменить имя входа ()

{
UserInfo  userinfo=db.getUser(username,null,pass)
if(userinfo.isLogin){
                session.setLoggedin(true);
//you can store username
                startActivity(new Intent(LoginActivity.this, HomeActivity.class)).putExtra("userName",userinfo.name);
                finish();
            }else{
                Toast.makeText(getApplicationContext(), "Wrong username/password",Toast.LENGTH_SHORT).show();
            }

}

В HomeActivity получите значение из намерения и установите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...