Как правильно вызвать диалог при запуске приложения?

Интерфейс, диалоги, темы, стили, меню
Ответить
jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Как правильно вызвать диалог при запуске приложения?

Сообщение jBee » 24 апр 2013, 10:18

Требуется при запуске приложения перед показом основной активити, вызвать окно ввода логина и пароля. Как это сделать правильно?
Я думаю вызвать диалог в методе onCreate в самом начале, и если скажем логин и пароль неправильные то сразу закрывать приложение.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение Foenix » 24 апр 2013, 10:39

как сделаешь так и будет для тебя правильно.
Я делаю в onCreate, ниче такого, все довольны. Только не забудь запретить закрытие диалога по кнопке назад и тач вне диалога, чтоб он тоже не закрылся.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение jBee » 24 апр 2013, 11:56

Ну в принципе ведь можно не запрещать закрытие диалога, просто когда проверяешь возвращаемые из него данные то в случае неправильного ответа соответственно реагировать.
А как запрещается закрытие диалога и тач вне диалога? В свойствах самого компонента?

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение neoksi » 24 апр 2013, 12:04

Я лично сделал по другому.
Есть у меня прозрачная активити, которая является главной для приложения. У неё в onCreate делается проверка есть ли авторизованная учетная запись, если нет, то она вызывает активити логина и сама закрывается, если есть, то вызывается активити приложения и опять же себя закрывает.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение Foenix » 24 апр 2013, 12:08

я не запрещаю закрытие, у него две кнопки есть - ок, кансел. ПО канселу просто закрываетс приложение, а в случае неправильного ответа диалог показывается опять.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение jBee » 24 апр 2013, 21:35

Сделал диалог и есть проблема - он вызывается на экран, но приложение продолжает выполнять код после вызова, а надо чтобы ждало завершения диалога. Вот код:

[syntax=java]
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_courier_main);

// Login dialog
showLogin();

// здесь код который выполняется сразу после вывода диалога
// надо чтобы выполнение продолжилось после нажатия кнопок в диалоге (т.е. после закрытия диалога)
...
}

// Код формирования диалога
String user, pwd;

private void showLogin() {
// TODO Auto-generated method stub
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
final LinearLayout ln = new LinearLayout(this);
ln.setOrientation(1);
ln.setDividerPadding(5);
final EditText etUser = new EditText(this);
final EditText etPwd = new EditText(this);

ln.addView(etUser);
ln.addView(etPwd);

alert.setView(ln);

alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
user = etUser.getText().toString().trim();
pwd = etPwd.getText().toString().trim();
Toast.makeText(getApplicationContext(), user,
Toast.LENGTH_SHORT).show();
}
});

alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
});
alert.show();
}
[/syntax]

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение neoksi » 24 апр 2013, 21:40

Вынеси код в отдельный метод и выполняй при положительном ответе диалога.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение Foenix » 24 апр 2013, 22:01

В том-то и дело, что в данных программах все примерно так же, поэтому как уже упоминалось, код будет непривычным - кусочками.
Поэтому имхо пусть грузится все, можно просто притенить это какой-то картинкой, или сделать прозрачную активити. В кусочках кода, когда логика прыгает - потом сложно разобраться. Например, если вы будете проверять пароль, обращаясь на сервер, то будут еще куски.. Оно все равно так будет, просто имхо для начинающего лучше, когда таких разрывов меньше..
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение neoksi » 25 апр 2013, 03:44

Olivka
Зато когда привыкнешь к таким вот кусочкам, сложно удержаться от повторения их в других языках ;)

jBee
Сообщения: 41
Зарегистрирован: 03 апр 2013, 16:24

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение jBee » 25 апр 2013, 09:53

neoksi писал(а):Я лично сделал по другому.
Есть у меня прозрачная активити, которая является главной для приложения. У неё в onCreate делается проверка есть ли авторизованная учетная запись, если нет, то она вызывает активити логина и сама закрывается, если есть, то вызывается активити приложения и опять же себя закрывает.
Диалоговые окна насколько я понял запускаются в отдельной нити (потоке), что было несколько неожиданно. И простого способа заставить UI поток ждать возврата из диалога я пока не нашел.

Как сделать чтобы активити себя закрывала? Т.е. активити логина - ввели данные, запускаем активити приложения с передачей данных логина, а активити логина закрываем - как делается закрытие?

Аватара пользователя
neoksi
Сообщения: 712
Зарегистрирован: 26 июл 2012, 10:42
Контактная информация:

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение neoksi » 25 апр 2013, 10:33

Просто после вызова другого активити следующей строкой пишем finish();

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Как правильно вызвать диалог при запуске приложения?

Сообщение Foenix » 25 апр 2013, 11:06

neoksi писал(а):Просто после вызова другого активити следующей строкой пишем finish();
правильно, мы же его в другой теме так и не убедили
viewtopic.php?f=39&t=1891
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить