Android: экран входа с noHistory и SharePrefs, но после выхода из приложения он возвращается на экран входа - PullRequest
0 голосов
/ 01 июня 2011

Мне удалось открыть приложение, и оно начинается с открытия экрана входа в систему, а после входа в систему вы попадаете на 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);

            }

    });

Ответы [ 2 ]

1 голос
/ 01 июня 2011

В Login.onCreate() проверьте идентификатор пользователя в SharedPref. Если он существует, перейдите непосредственно к MainActivity.

0 голосов
/ 30 июня 2015

У меня есть проверка решения при выходе пользователя с заставки приложения или нет, а затем после перехода на экран входа или домашний экран

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...