Android-общие настройки условного переключения активности - PullRequest
1 голос
/ 30 мая 2011

У меня есть приложение для Android, которое я использую для регистрации пользователей на моем веб-сайте.Моя первая задача - зарегистрировать пользователя, если мой файл общих настроек показывает, что информация о зарегистрированном пользователе отсутствует.

Если в моем приложении зарегистрирован зарегистрированный пользователь, я предоставляю следующий код для простого и автоматического переключения на «домашнюю страницу».активность:

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

        if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "")  == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, "") == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, "") == null){
            //setContentView(R.layout.signin);
            Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
        }else{
            Intent intent   =   new Intent(SignIn.this, Confirmed.class);
            startActivity(intent);
        }
... other code

Итак, из моей активности по умолчанию, signin.java, приложение либо переключится на подтвержденную активность, либо останется включенным и отобразит активность входа.

Моя проблема в том,Когда система работает, и я переключаюсь на действие Подтверждено, я предоставляю прослушиватель onclick выхода из системы, который находится ниже:

 signout.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //USERPREFERENCES.cl
                Toast.makeText(Confirmed.this, "signout responding!", Toast.LENGTH_LONG).show();
                USERPREFERENCES.edit().clear().commit();
            }
        });

Он отвечает и очищает все мои переменные общих настроек.Но когда я использую свое меню для ручного переключения на действие входа, я все равно возвращаюсь к подтвержденному действию.

Это происходит, хотя я могу подтвердить, что переменные пусты.

Iнадеюсь, что это делает сцену для тех, кто может предложить мне помощь.Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 мая 2011

Это потому, что когда вы переключитесь обратно на LoginActivity, это будет возобновлено, вместо того, чтобы быть созданным, означает, что ваш код входа, который вы написали в OnCreate, не будет вызываться, потому что в этот раз вызывался Overrider OnResume, а не onCreate.

Так что либо напишите этот код снова в onResume, либо вызовите finish () перед переходом ко второму действию, чтобы в следующий раз он вызвал onCreate ()

2 голосов
/ 30 мая 2011

Это вряд ли когда-нибудь будет правдой:

USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, "")  == null

Что если вы используете это вместо этого?

if( USERPREFERENCES.getString(USERPREFERENCES_USERMAIL, null)  == null && USERPREFERENCES.getString(USERPREFERENCES_USERID, null) == null && USERPREFERENCES.getString(USERPREFERENCES_USERNAME, null) == null){
    //setContentView(R.layout.signin); TRY TO AVOID DOING THIS THING!!!!!
    Toast.makeText(SignIn.this, "testing...", Toast.LENGTH_LONG).show();
}else...

Кроме того, в качестве рекомендации ... вместо того, чтобы переключаться между действиями... что если вы создадите просто действие Signing.java и поместите ViewFlipper в его макет.Таким образом, ваше приложение будет не только быстрее, но и проще в обслуживании.

1 голос
/ 30 мая 2011

Если вы вернетесь к первому действию, onCreate больше не будет вызываться (если действие не было уничтожено из-за нехватки ресурсов). Переместите код аутентификации в onResume.

...