Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 28 мар 2017, 02:14

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 60 ]  На страницу 1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: 27 фев 2012, 04:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 71 раз.
В этом уроке:

- создаем AlertDialog
- настраиваем заголовок, сообщение, картинку и кнопки

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 22 авг 2016, 17:46, всего редактировалось 5 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 фев 2012, 14:08 

Зарегистрирован: 27 фев 2012, 12:14
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте, у меня в диалоге указывается строка adb.setMessage(str), при первом вызове диалога все показывается правильно потом str изменяется но в диалоге почему то остаются старые значения. в чем может быть проблема?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 мар 2012, 11:40 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 71 раз.
caliskan писал(а):
Здравствуйте, у меня в диалоге указывается строка adb.setMessage(str), при первом вызове диалога все показывается правильно потом str изменяется но в диалоге почему то остаются старые значения. в чем может быть проблема?


Как раз об этом сегодняшний урок ))

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 мар 2012, 11:41 

Зарегистрирован: 27 фев 2012, 12:14
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
спасибо. почитаю)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 июл 2012, 14:39 

Зарегистрирован: 13 июл 2012, 14:23
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Привіт, є Activity1 запускає Activity2, в Activity2 використовую AsyncTask<Void, Void, Void> в методі doInBackground ставлю затримку на 5 секунд, в методі onPostExecute роблю виклик showDialog, в Activity2 описано метод protected Dialog onCreateDialog(int id), коли запускаю на виконнання AsyncTask перехожу на Activity1 діалогу нема, якщо залишаюсь в Activity2 то появляється, що зробити щоб появилось в Activity1?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 июл 2012, 18:41 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 71 раз.
Діма писал(а):
Привіт, є Activity1 запускає Activity2, в Activity2 використовую AsyncTask<Void, Void, Void> в методі doInBackground ставлю затримку на 5 секунд, в методі onPostExecute роблю виклик showDialog, в Activity2 описано метод protected Dialog onCreateDialog(int id), коли запускаю на виконнання AsyncTask перехожу на Activity1 діалогу нема, якщо залишаюсь в Activity2 то появляється, що зробити щоб появилось в Activity1?


Этот материал смотрели? Там, в принципе, есть наводка, что нужно делать.

Можно вынести AsyncTask в отдельный класс и создать какое-нить static хранилище для AsyncTask, которое будет доступно для всех Activity.
Activiy2 создает задачу AsyncTask, дает ей ссылку на себя, и кладет задачу в хранилище.
Далее Activity2 закрывается, и при этом в onStop оно ссылку на себя удаляет из задачи.
Activity1 появляется, и в onStart берет из хранилища задачу AsyncTask и дает ей ссылку на себя.
Когда задача срабатывает, она работает с Activity1.

На практике не пробовал, но вроде должно сработать. Отпишитесь, потом, плз! Интересная задача.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 16 июл 2012, 13:17 

Зарегистрирован: 14 май 2012, 17:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
damager82 писал(а):

Этот материал смотрели? Там, в принципе, есть наводка, что нужно делать.

Можно вынести AsyncTask в отдельный класс и создать какое-нить static хранилище для AsyncTask, которое будет доступно для всех Activity.
Activiy2 создает задачу AsyncTask, дает ей ссылку на себя, и кладет задачу в хранилище.
Далее Activity2 закрывается, и при этом в onStop оно ссылку на себя удаляет из задачи.
Activity1 появляется, и в onStart берет из хранилища задачу AsyncTask и дает ей ссылку на себя.
Когда задача срабатывает, она работает с Activity1.

На практике не пробовал, но вроде должно сработать. Отпишитесь, потом, плз! Интересная задача.

Что-то мне подсказывает, что так не должно работать. Здесь несколько другой случай, переход c activity2 на activity1 осуществляется пользователем нажатием на кнопку возврат и система не вызывает onRetainNonConfigurationInstance() , а других способов передачи ссылки на объекты между activity я не знаю (буду очень признателен, если кто подскажет).
Но проблема очень важна, т.к. это может вызывать исключения, и не проявиться на стадии тестирования. И это нужно учитывать. Я имею в виду то, что процессы порожденные activity могут продолжать жить после уничтожения самой activity , поэтому нужно предусмотреть либо остановку этих процессов в onDestroy или сам процесс должен контролировать состояние своего родителя (к примеру вызовом Activity2.this.isFinishing()) .
Еще можно предотвратить уничтожение самой Activity2 перехватом кнопки возврат, тогда можно будет в любой момент к ней вернуться и восстановить связь с процессом. Можно, к примеру, использовать код:
@Override
public void onBackPressed() {
Intent intent = new Intent(getApplicationContext(), Activity1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
}
Тогда Activity2 не будет уничтожено, а просто переместится в стеке, и его можно будет вызвать снова, onCreate при этом вызываться не будет, вместо него будет вызван onNewIntent. Связь с процессами снова будет восстановлена. Но здесь возникает много подводных камней.
А вообще, если нужен процесс с которым нужна связь из любых Activity, то думаю, лучше будет использовать сервис.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 10:04 

Зарегистрирован: 13 июл 2012, 14:23
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Я навів простий приклад з двома Activity, в мене задача складніша в мене є декілька Activity в одному із них створюється потік для виконання деякої задачі, вона займає деякий час по закінченню мені треба видати діалог, але я можу находитись в любому із можливих Activity, в цьому в мене і проблема) Дякую за допомогу AndreyI, буду пробувати сервіс. Але є бажання, подумати як зробити цю задачу через AsyncTask)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 10:46 
Аватар пользователя

Зарегистрирован: 16 июл 2012, 22:37
Сообщений: 439
Благодарил (а): 0 раз.
Поблагодарили: 27 раз.
Broadcast Receiver попро6уй + полиморфизм
делаешь а6страктную активити (abstract, extends Activity)
дальше создаешь ресивер...
перегружаешь конструктор
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. @Override
  2.             public void onReceive(Context context, Intent intent) {
  3.                //тут твой диалог
  4.             }

наследуешь потом свои активити от этой и в нужной послаешь 6родкаст во вложенном асинктаске и во всех твоих активити 6удет диалог

П.С. программирую 2 месяца, если не прав то поправте

_________________
CEO of a company R.id.team


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 11:26 

Зарегистрирован: 14 май 2012, 17:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Диалог можно оформить как отдельную Activity и вызывать его из любого потока.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 12:48 

Зарегистрирован: 13 июл 2012, 14:23
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Цитата:
На практике не пробовал, но вроде должно сработать. Отпишитесь, потом, плз! Интересная задача.


Я зробив так:
public static class MyActivity extends Activity {

private static Context myContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.setMyContext(this);
Log.d(LOG_TAG, getMyContext().toString());
super.onCreate(savedInstanceState);
}

public static Context getMyContext() {
return myContext;
}

public void setMyContext(Context myContext) {
MyActivity.myContext = myContext;
}
}

Потім кожному Activity наслідую MyActivity, тоді в методі onPostExecute класу AsyncTask я можу викликати getMyContext() і показати діалог в активному Activity)
В кого є краща ідея прошу пишіть на форум)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 13:17 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 71 раз.
AndreyI писал(а):
Здесь несколько другой случай, переход c activity2 на activity1 осуществляется пользователем нажатием на кнопку возврат и система не вызывает onRetainNonConfigurationInstance() , а других способов передачи ссылки на объекты между activity я не знаю (буду очень признателен, если кто подскажет).

Я предложил использовать какое-нить статическое хранилище. Не onRetainNonConfigurationInstance.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 13:28 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1320
Благодарил (а): 0 раз.
Поблагодарили: 71 раз.
Діма писал(а):
Потім кожному Activity наслідую MyActivity, тоді в методі onPostExecute класу AsyncTask я можу викликати getMyContext() і показати діалог в активному Activity)
В кого є краща ідея прошу пишіть на форум)

Хитро) Вместо статики для AsycnTask применяем статику для Activity.
Но надо как-то учитывать возможность того, что onPostExecute может быть вызван в момент, когда старое Activity уничтожено, а новое еще не создалось. Я седня допишу на эту тему свои мысли в уроке 91.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 13:49 

Зарегистрирован: 13 июл 2012, 14:23
Сообщений: 11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Цитата:
Хитро) Вместо статики для AsycnTask применяем статику для Activity.
Но надо как-то учитывать возможность того, что onPostExecute может быть вызван в момент, когда старое Activity уничтожено, а новое еще не создалось. Я седня допишу на эту тему свои мысли в уроке 91.

Постарайтесь описати більшість таких ситуацій де можуть виникнути помилки)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 июл 2012, 14:05 

Зарегистрирован: 14 май 2012, 17:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Интересное решение, только логичнее будет организовать обновление статического поля не в onCreate, а в onResume. onCreate может не всегда вызываться. Но это уже мелочи, главное сам прием можно взять на вооружение. Думаю нужно как-то обобщить и разместить в наработках.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 сен 2012, 17:00 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
у меня подчеркиваются setPos, Neg, Neu и ОнКликЛистенер
Не могу скрин прикрутить, не могу найти, как это делается ((
Вот ссылка на скрин
http://zalil.ru/33742794


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 сен 2012, 17:44 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
А вот так сработало (добавил DialogInterface перед OnClickListener)
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. DialogInterface.OnClickListener myClickListener=new DialogInterface.OnClickListener() {
  2.                 public void onClick(DialogInterface dialog, int which) {
  3.                         switch(which){
  4.                                 case Dialog.BUTTON_POSITIVE:
  5.                                         saveData();
  6.                                         finish();
  7.                                         break;
  8.                                 case Dialog.BUTTON_NEGATIVE:
  9.                                         finish();
  10.                                         break;
  11.                                 case Dialog.BUTTON_NEUTRAL:
  12.                                         break;
  13.                         }
  14.                 }
  15.         };


Почему так? Не сходится с уроком (((


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 сен 2012, 16:51 
Аватар пользователя

Зарегистрирован: 01 апр 2012, 17:09
Сообщений: 117
Откуда: Минск
Благодарил (а): 11 раз.
Поблагодарили: 5 раз.
powercat писал(а):
А вот так сработало (добавил DialogInterface перед OnClickListener)
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. DialogInterface.OnClickListener myClickListener=new DialogInterface.OnClickListener() {
  2.                 public void onClick(DialogInterface dialog, int which) {
  3.                         switch(which){
  4.                                 case Dialog.BUTTON_POSITIVE:
  5.                                         saveData();
  6.                                         finish();
  7.                                         break;
  8.                                 case Dialog.BUTTON_NEGATIVE:
  9.                                         finish();
  10.                                         break;
  11.                                 case Dialog.BUTTON_NEUTRAL:
  12.                                         break;
  13.                         }
  14.                 }
  15.         };


Поддерживаю. У меня тоже самое! Спасибо за решение)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 сен 2012, 17:10 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
это просто у вас был не правильный импорт и по этому не работало, так как вы импортировали android.view.View.OnClickListener а надо было android.content.DialogInterface.OnClickListener ... внимательней нужно быть!

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 сен 2012, 17:57 
Аватар пользователя

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
ээ...я просто тычу ктрлшифтО )))


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 60 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB