Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SharedReference中存储登录状态_Java_Android_Sharedpreferences - Fatal编程技术网

Java 在SharedReference中存储登录状态

Java 在SharedReference中存储登录状态,java,android,sharedpreferences,Java,Android,Sharedpreferences,我正在制作android应用程序,我使用注册、登录和注销屏幕。我需要的是保存登录状态。如果用户登录一次,则在注销之前,他将不会再次登录。我用过,但我面临很多问题 这是我的代码: 公共类登录页扩展了AppCompative活动{ 私人共享引用共享引用; 按钮登录、注册、数据库; 编辑文本用户名; 编辑文本密码; 文本视图消息; 字符串db_用户名; MyDBManager数据库; 静态final int REGISTRATION_REQUEST=1;//请求代码 @凌驾 创建时受保护的void(B

我正在制作android应用程序,我使用注册、登录和注销屏幕。我需要的是保存登录状态。如果用户登录一次,则在注销之前,他将不会再次登录。我用过,但我面临很多问题

这是我的代码:

公共类登录页扩展了AppCompative活动{
私人共享引用共享引用;
按钮登录、注册、数据库;
编辑文本用户名;
编辑文本密码;
文本视图消息;
字符串db_用户名;
MyDBManager数据库;
静态final int REGISTRATION_REQUEST=1;//请求代码
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.loginpage);
db=新的MyDBManager(此);
msg=(TextView)findViewById(R.id.msg);
login=(按钮)findviewbyd(R.id.Button);
寄存器=(按钮)findViewById(R.id.button2);
数据库=(按钮)findViewById(R.id.button3);
用户名=(EditText)findViewById(R.id.user);
密码=(EditText)findViewById(R.id.pass);
//单击并移动到下一个活动
login.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
db.open();
游标c=db.getUser(username.getText().toString(),password.getText().toString());
if(c.moveToFirst()){
db.close();
意图=新意图(LoginPage.this,Menu.class);
intent.putExtra(“用户名”,Username.getText().toString());
startActivity(intent);//调用登录活动
}
其他的
{
db.close();
//设置用户名和/或密码无效时的错误消息
msg.setText(“无法登录:错误的用户名或密码!”);
//保持当前活动。
}
{
}
}
});
//单击并移动到下一个活动
register.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(LoginPage.this,Registration.class);
startActivityForResult(意向、注册请求);
}
});
//单击并移动到下一个活动
database.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=新Intent(LoginPage.this,Database.class);
星触觉(意向);
}
});
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
if(requestCode==注册请求){
//if(resultCode==Registration.RESULT\u OK){
Log.d(“Pikatchu”,“用户成功注册!”);
Bundle res=data.getExtras();
字符串结果=res.getString(“结果”);
系统输出打印项次(结果);
msg.setText(结果);
}
}
}

你能给我一些建议为什么我的代码不起作用吗?

当用户登录时将布尔loggedin存储到SharedReference中,并在启动过程中检查用户loggedin,然后你可以导航到必要的路径,
布尔loggedin默认值应为false

第1步:首次登录成功后,将这些用户名、密码存储在共享首选项或数据库中。第2步:下次用户来到登录页面时,在缓存中查找(从数据库或共享首选项)用户详细信息是否存在于缓存中“活动onCreate()中”。如果存在,请将他直接带到菜单页或主页,否则什么也不做。我的意思是让用户自己填写用户名和密码。通常登录成功时,会将相应的用户名存储在缓存中,而不是用户名和密码。我实现了此方法,但失败了。如果出现错误,请给我合适的解决方案。你能实现吗他在超级代码上的方法?您必须在登录页面屏幕之前使用此逻辑,如果用户未登录,请导航到登录页面,否则请导航到其他页面ctx.startActivity(new Intent(ctx,Menu.class));我在登录按钮上编写了此代码,但出现空对象引用错误。