Java 将用户名值从数据库显示到文本视图
我是Java新手,我想在layout activity_home.xml中成功登录到我的文本视图后,在SQLite数据库中显示我的表中的用户名值 我不知道如何用我的代码获取用户名值 我的activity_home.xml布局中的文本视图代码Java 将用户名值从数据库显示到文本视图,java,android,database,sqlite,Java,Android,Database,Sqlite,我是Java新手,我想在layout activity_home.xml中成功登录到我的文本视图后,在SQLite数据库中显示我的表中的用户名值 我不知道如何用我的代码获取用户名值 我的activity_home.xml布局中的文本视图代码 <TextView android:id="@+id/nameuser" android:layout_width="wrap_content" android:layout_height="wrap_content"
<TextView
android:id="@+id/nameuser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="18dp"
android:layout_marginTop="32dp"/>
Session.java
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
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();
}
}
}
登录成功后,使用intent将用户名传递给您的HomeActivity
private void login(){
String username = etUsername.getText().toString();
String pass = etPass.getText().toString();
if(db.getUser(username,null,pass)){
session.setLoggedin(true);
Intent intent=new Intent(this,HomeActivity.class);
intent.putExtra("username",username);
startActivity(intent);
finish();
}else{
Toast.makeText(getApplicationContext(), "Wrong username/password",Toast.LENGTH_SHORT).show();
}
}
// now get Username in HomeActivity like this
String username=getIntent().getStringExtra("username");
if(!TextUtils.isEmpty(username)){
// and set on your textview here
nameuser.setText(""+username);
}
1.根据注释将行添加到LoginActivity
公共类LoginActivity扩展AppCompatActivity实现View.OnClickListener{
public static final String INTENTEXTRAKEY_LOGGEDINUSERNAME=“iek_LOGGEDINUSERNAME”;//错误太多:无法解析符号sqLiteDatabase,游标,并且您没有告诉我如何从intent获取值并进行设置。因此,我可以在登录textViewStill error后从sqlite数据库显示用户名,代码类似于此post getUser()方法将返回字符串类型并仅向getUser()传递两个参数(email和pass)方法你想使用用户名和密码登录吗?不,我想在我的文本视图布局示例中显示用户名。当我使用用户名“Kira”登录时,我的布局中的文本视图将更改为“Kira”。我已经使用用户名和密码成功登录。很抱歉,为什么我的文本视图什么也不显示?它不显示任何用户名2019-06-02 14:30:15.837 1953-2100/system_process E/TaskPersister:访问最近目录(目录不存在?)时发生文件错误。在开始活动(意图)
后,尝试注释finish(),即have//finish()
。您还需要在阅读后检查代码。因为像您经常做的那样,先执行startActivity
,然后执行finish
。您应该执行finish
(返回调用活动)或startActivity
,两者都不太可能。尤其是
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();
}
}
}
private void login(){
String username = etUsername.getText().toString();
String pass = etPass.getText().toString();
if(db.getUser(username,null,pass)){
session.setLoggedin(true);
Intent intent=new Intent(this,HomeActivity.class);
intent.putExtra("username",username);
startActivity(intent);
finish();
}else{
Toast.makeText(getApplicationContext(), "Wrong username/password",Toast.LENGTH_SHORT).show();
}
}
// now get Username in HomeActivity like this
String username=getIntent().getStringExtra("username");
if(!TextUtils.isEmpty(username)){
// and set on your textview here
nameuser.setText(""+username);
}
public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
public static final String INTENTEXTRAKEY_LOGGEDINUSERNAME = "iek_loggedinusername"; //<<<<<<<<<< ADDED THIS LINE
private Button login;
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)); <<<<<<<<< OLD CODE
Intent intent = new Intent(LoginActivity.this,HomeActivity.class); //<<<<<<<<<< NEW CODE
intent.putExtra(INTENTEXTRAKEY_LOGGEDINUSERNAME,username); //<<<<<<<<<< NEW CODE
startActivity(intent); //<<<<<<<<<< NEW CODE
finish();
}else{
Toast.makeText(getApplicationContext(), "Wrong username/password",Toast.LENGTH_SHORT).show();
}
}
public class HomeActivity extends AppCompatActivity {
TextView nameuser, walletuser, mainmenus,
pagetitle, pagesubtitle;
Button btnguide;
Animation atg, atgtwo, atgthree;
ImageView imageView3;
SharedPreferences sharedpreferences;
Intent intent;
private Session session;
TextView btnLogout, btnDaftarBarang, btnTambah;
String loggedinusername; //<<<<<<<<<< ADDED
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
session = new Session(this);
loggedinusername = this.getIntent().getStringExtra(LoginActivity.INTENTEXTRAKEY_LOGGEDINUSERNAME); //<<<<<<<<<<ADDED
atg = AnimationUtils.loadAnimation(this, R.anim.atg);
atgtwo = AnimationUtils.loadAnimation(this, R.anim.atgtwo);
atgthree = AnimationUtils.loadAnimation(this, R.anim.atgthree);
nameuser = findViewById(R.id.nameuser);
nameuser.setText(loggedinusername); //<<<<<<<<<< ADDED