Android сохранить состояние входа пользователя в систему - PullRequest
1 голос
/ 13 сентября 2011

Мне снова нужна небольшая помощь с Android SharedPreference. Я искал способ сохранить состояние пользователя, если он вошел в систему или нет .. Так что я сделал эту часть, но теперь проблема в другом. У меня естьtabhost, который включает в себя несколько вкладок, и страница входа в систему запускается из одной из дочерних операций. Вот небольшой пример:

TAB1 - TAB2 - TAB3

TAB1 -> ACT1(дочерняя активность TAB1) ACT1 ---> Страница входа.

Поэтому я использую SharedPreferences для получения и установки состояний isLoggedIn, но проблема в том, что я хочу перезагрузить пользовательский интерфейс, когда язакройте страницу входа, чтобы TAB1 мог показать новый элемент.

Вот мой код на данный момент:

Страница входа:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = isLogged.edit();
        editor.putBoolean("isLoggedIn", true);
        editor.commit();
        this.notifyAll();

и в TAB1 у меня есть это:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        boolean isLoggedIn = isLogged.getBoolean("isLoggedIn", false);

Есть идеи, как это исправить?

1 Ответ

1 голос
/ 13 сентября 2011

Насколько я понимаю вашу проблему, вы хотите узнать, когда пользователь вошел в вашу учетную запись "LoginActivity", чтобы вы могли перезагрузить "TabActivity", верно?Вы можете сделать это, вернув результат родительской операции.

public class StackOverflowActivity extends Activity {

    public static final int LOGIN_REQUEST = 100;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent i = new Intent(StackOverflowActivity.this, Login.class);
                startActivityForResult(i, LOGIN_REQUEST);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case LOGIN_REQUEST:
            // TODO implement UI refresh
            Toast.makeText(getApplicationContext(), "I am coming from the login activity!",
                    Toast.LENGTH_LONG).show();
            break;
        default:
            Toast.makeText(getApplicationContext(), "Unexpected request code!",
                    Toast.LENGTH_LONG).show();
            break;
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...