Общие настройки не сохраняют имя пользователя в сеансе - PullRequest
0 голосов
/ 08 июня 2011

В течение нескольких дней я пытался получить имя пользователя для правильного сохранения в сеансе. Сначала я открыл приложение, и оно откроет экран входа в систему. Я войду в систему с именем пользователя, тогда это приведет меня к MainActivity. Теперь я выхожу из приложения и снова открываю приложение, чтобы убедиться, что имя пользователя сохранено, и оно пройдет экран входа в систему и сразу перейдет к MainActivity. Пока все хорошо, тогда я выйду из системы и вернусь к экрану входа. Я хочу убедиться, что он полностью вышел из системы, поэтому я выхожу из приложения и снова открываю приложение, и это приведет меня к MainActivity. Я не мог понять, как решить эту проблему.

мой логин

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString("username", username);
        editor.commit();


        if(prefs.getString("username", null)!=username)
        {Intent i = new Intent(getApplicationContext(), Customer.class); 
        startActivity(i);}


        etUsername = (EditText)findViewById(R.id.username);
        btnLogin = (Button)findViewById(R.id.login_button);
        btnCancel = (Button)findViewById(R.id.cancel_button);
        lblResult = (TextView)findViewById(R.id.result);

        btnLogin.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
            // Check Login
            String username = etUsername.getText().toString();

            if(username.equals("1111")){
                lblResult.setText("Login successful.");

                 Intent i = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(i);

мой выход из класса

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();

                if (logout.equals("99")){
                    lblResult.setText("Logout successful");

                    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

                    SharedPreferences.Editor editor = prefs.edit();
                    editor.remove("username");
                    editor.commit();

                    Intent i = new Intent(getApplicationContext(), Login.class);
                    startActivity(i);

                    finish();

Ответы [ 2 ]

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

Если я что-то упустил, похоже, что вы устанавливаете username в своих настройках, а затем сразу же проверяете это значение.Похоже, что этот оператор if всегда будет проходить:

if(prefs.getString("username", null)!=username)

Кроме того, как указал @inazaruk, вы должны использовать equals() вместо == для сравнения String.

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

Вы должны сравнивать строки, используя метод equals(), а не !=. Кроме того, по умолчанию не указывайте значение NULL:

if(!prefs.getString("username", "").equals(username))
...