2013-02-25 2 views
0

У меня есть активность входа, которую я хочу показать только при запуске, и если пользователь выходит из системы. Поэтому, когда пользователь находится в активности loggedin и нажимает на кнопку «назад», я хочу закрыть приложение, а не вернуться к активности входа.Действия перезапуска на Finish()

Я успешно перезаписаны кнопку задний обратный вызов:

public override bool OnKeyDown(Keycode keyCode, KeyEvent e) 
{ 
    if (keyCode == Keycode.Back) 
    { 
     Console.Out.WriteLine("Close activity"); 
     return true; 
    } 

    return base.OnKeyDown(keyCode, e); 
} 

который останавливает BackButton от возвращения к прежней деятельности. Тем не менее, в том числе Finish(); перед return true ли сделать Войти активность вновь :(

Это код, я использую после входа в систему:.

Intent activity = new Intent(this, typeof(WorkOrderActivity)); 
StartActivity(activity); 

Пытались пару Intentflags и LaunchModes, но не могу получить его на работу По к журналам только одна активность запускается после входа в систему.

+1

Вы рассмотрели возможность «невидимой» активности всплеска (тема: нет отображения), которая проверяет, вошел ли пользователь в систему и запускает соответствующую деятельность? Это был бы лучший подход, дайте мне знать, если вам нужно – Droidman

+0

проверить мой ответ – moDev

ответ

2

Это нормальное поведение, чтобы показать предыдущий Activity после finish()

Метод finish() просто закрыть активность, которая называют его

You может скрыть вашу регистрационную форму и проверить статус входа пользователя на ваш onResume() вход в систему (и завершить его, если он занесен в журнал)

+0

Это сработало. Мысль 'Finish()' оставила бы все приложение. – Sunkas

+0

Не забудьте проверить, только ли вы открываете приложение, потому что, если вы этого не сделаете, и пользователь уже зашел в систему при запуске, приложение немедленно закроется: p –

+0

Я сделал «Finish» сразу после входа в систему. Похоже на то, как предложил @Mitesh, но без флагов. – Sunkas

0

Вы должны очистить стек при запуске другой деятельности от деятельности Вход.

Intent intent = new Intent(LoginActivity.this, HomeActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK |  Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 

И когда пользователь выходит из системы, вы можете запустить LoginActivity.

0
public override bool OnKeyDown(Keycode keyCode, KeyEvent e) 
{ 
    if (keyCode == Keycode.Back) 
    { 
     moveTaskToBack(true); 
     return true; 
    } 

    return base.OnKeyDown(keyCode, e); 
} 
2

Попробуйте это работает ..

Intent mIntent = new Intent(this, WorkOrderActivity.class); 
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(mIntent); 

finish(); 
Смежные вопросы