Мне удалось открыть приложение, и оно начинается с открытия экрана входа в систему, а после входа в систему вы попадаете на MainActivity
. С MainActivity
нет возврата для входа в систему, и он будет оставаться в сеансе до выхода из системы. Но когда я выхожу из приложения, оно возвращается к экрану входа в систему, даже если у меня есть Sharedpref
, который сохраняет имя пользователя в сеансе. Я добавил nohistory=true
в manifest
. В MainActivity
я поставил Intent 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);
Logout.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);
}
});