问题描述
||
我能够打开该应用程序,它首先打开登录屏幕,登录后将带您到ѭ0。从“ 0”开始,没有任何可登录的内容,它将一直保持会话状态直到注销。但是,当我退出该应用程序时,即使我有一个“ 2”字样也可以返回登录屏幕,该文件名将会话中的用户名保存了下来。我在
manifest
中加了nohistory=true
。在MainActivity
中放入意图mainactivity.class
(如果按返回按钮),原因是当我:
logout > login > mainactivity
然后按返回按钮将返回注销屏幕(由于myhistory=true
,登录应该可以)。我的问题是,即使该应用退出了,如何保持用户名在会话中。
下面的链接对我没有太大帮助
在Android中创建登录屏幕/活动的正确方法是什么?
防止用户登录后显示登录屏幕
如何在Android中保留登录凭据并自动登录
我的密码
LOGIN.java
public class Login extends Activity {
private EditText etUsername;
private Button btnLogin;
private Button btnCancel;
private TextView lblResult;
@Override
public boolean onKeyDown(int keyCode,KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK)
{
this.startActivity(new Intent(Login.this,Login.class));
}
return true;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
btnLogin.setonClickListener(new OnClickListener() {
public void onClick(View v) {
String username = etUsername.getText().toString();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = prefs.edit();
editor.putString(\"username\",username);
if(username.equals(\"1111\")){
lblResult.setText(\"Login successful.\");
Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);
注销.java
public class logoutActivity extends Activity {
private Button btnlogout;
private Button btnCancel;
private TextView lblResult;
private EditText code;
@Override
public boolean onKeyDown(int keyCode,KeyEvent event)
{
if(keyCode==KeyEvent.KEYCODE_BACK)
{
this.startActivity(new Intent(logoutActivity.this,MainActivity.class));
}
return true;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.logout);
code = (EditText)findViewById(R.id.codeout);
btnlogout = (Button) findViewById(R.id.submit);
btnCancel = (Button) findViewById(R.id.cancel);
lblResult = (TextView)findViewById(R.id.result);
btnlogout.setonClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// Todo Auto-generated method stub
String logout = code.getText().toString();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.remove(\"username\");
if (logout.equals(\"99999\")){
lblResult.setText(\"logout successful\");
Intent i = new Intent(getApplicationContext(),Login.class);
startActivity(i);
} else {
lblResult.setText(\"logout Failed\");
}
}
});
btnCancel.setonClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);
}
});
解决方法
在
Login.onCreate()
中,检查SharedPref中的用户ID。如果存在,请直接转到ѭ0。
, 我是否可以在应用程序的初始屏幕用户注销中找到解决方案,然后进入登录屏幕或主屏幕
String unique_id = loginSharedPreferences
.getString(\"UniqueId\",\"NA\");
if (unique_id.equals(\"\")) {
Intent intent = new Intent(Splace_Screen.this,LoginActivity.class);
startActivity(intent);
} else {
Intent intent = new Intent(Splace_Screen.this,DrawerActivity.class);
startActivity(intent);
}
finish();