Урок 120. Виджеты. Обработка нажатий
Добавлено: 12 фев 2013, 23:00
В этом уроке:
- обрабатываем нажатия на виджет
Click here to read this article!
- обрабатываем нажатия на виджет
Click here to read this article!
Добро пожаловать на форум сайта
http://forum.startandroid.ru/
При любой перерисовке remoteviews, лучше все инициализировать заново.trololo1 писал(а):neoksi, может быть, что сбрасывается. У меня AlarmManager запускает Service, в котором запускается через определённый промежуток времени ExecutorService, в котором запрашивается сайт, а там уже из информации на сайте вставляется информация в виджет через remoteviews.
В виджетах других программ такое не встречал.
Может кто с этим сталкивался. Я же в явном виде не сбрасываю значения pendingintent для кнопок...Виджет сам по себе ошибок, вроде бы, не даёт. Инициализация PendingIntent для кликов происходит только в одном месте.
да . походу дела, это единственный вариант правильной инициализации.neoksi писал(а):При любой перерисовке remoteviews, лучше все инициализировать заново.trololo1 писал(а):neoksi, может быть, что сбрасывается. У меня AlarmManager запускает Service, в котором запускается через определённый промежуток времени ExecutorService, в котором запрашивается сайт, а там уже из информации на сайте вставляется информация в виджет через remoteviews.
В виджетах других программ такое не встречал.
Может кто с этим сталкивался. Я же в явном виде не сбрасываю значения pendingintent для кнопок...Виджет сам по себе ошибок, вроде бы, не даёт. Инициализация PendingIntent для кликов происходит только в одном месте.
Код: Выделить всё
public void terminal(String[] cmd) throws IOException {
p = Runtime.getRuntime().exec(cmd);
DataOutputStream os = new DataOutputStream(p.getOutputStream());
for (String tmpCmd : cmd) {
os.writeBytes(tmpCmd + "\n");
}
String strL;
String strL1;
BufferedReader reader = new BufferedReader(new InputStreamReader(
p.getInputStream()));
while ((strL = reader.readLine()) != null) {
strL1=strL;
}
os.writeBytes("exit\n");
os.flush();
}1) Там целый абзац посвящен этому.neoksi писал(а):damager82
После прочтения кода в уроке, у меня возникло 2 вопроса по использованию в нем PendingIntent:
1) Почему у всех нажимаемых элементов REQUEST_CODE = widgetID?
2) Почему не используются флаги гарантирующие перезапись Intent?
и т.д.Вы обратили внимание, что при создании PendingIntent мы использовали ID экземпляров виджета в качестве requestCode? Поясняю, зачем это сделано...
Кладите значение в preference, а виджетом читайте. Или я не понял вопрос.beeline09 писал(а):Теперь мне нужно допустим по нажатию на update в R.id.tvCount чтоб положилось значение strL1. Как мне реализовать подобное? Ради эксперимента хочу прочитать ответ от "cat /proc/swaps" и вывести его в R.id.tvCount.
Хороший вопрос. Я пока всего одну книгу прочел по игроделанию и знаний (а уж тем более практики) у меня не особо много по этой теме. Да и есть еще куча важных тем, например: звук, камера, датчики, координаты.tserg писал(а):Автор, простите что не в тему, но очень хочется знать, когда дойдем до OpenGL?
Идея! Спасибо!damager82 писал(а):Кладите значение в preference, а виджетом читайте. Или я не понял вопрос.beeline09 писал(а):Теперь мне нужно допустим по нажатию на update в R.id.tvCount чтоб положилось значение strL1. Как мне реализовать подобное? Ради эксперимента хочу прочитать ответ от "cat /proc/swaps" и вывести его в R.id.tvCount.
А ты представь ситуацию, когда на виджете 35 элементов с одним Action и разными экстра данными... (у меня на практике такой случай бывал)damager82 писал(а):1) Там целый абзац посвящен этому.neoksi писал(а):damager82
После прочтения кода в уроке, у меня возникло 2 вопроса по использованию в нем PendingIntent:
1) Почему у всех нажимаемых элементов REQUEST_CODE = widgetID?
2) Почему не используются флаги гарантирующие перезапись Intent?и т.д.Вы обратили внимание, что при создании PendingIntent мы использовали ID экземпляров виджета в качестве requestCode? Поясняю, зачем это сделано...
А если REQUEST_CODE уже занят к примеру нотификацией?damager82 писал(а):2) А зачем? В моем случае в этом нет необходимости.
Есть несколько блогов по AndEngine. Но они не очень-то расчитаны на новичков. На английском конечно инфы завались, но с английским у меня не очень. Я в программировании не новичок. Нормально владею С++ и Delphi, работаю программистом 1С. Но вот OpenGL мне ещё в универе не дался (хотя под DiretX програмить получалось), а с таким подходом как у Вас написаны уроки я бы точно разобрался в этом вопросе.damager82 писал(а):Хороший вопрос. Я пока всего одну книгу прочел по игроделанию и знаний (а уж тем более практики) у меня не особо много по этой теме. Да и есть еще куча важных тем, например: звук, камера, датчики, координаты.tserg писал(а):Автор, простите что не в тему, но очень хочется знать, когда дойдем до OpenGL?
А в рунете нет чтоль толковых статей на эту тему?
Если я не ошибаюсь, то нужно не getBroadcast вызывать а getActivitydarkchaos писал(а):Автор, а как сделать чтобы запускался браузер по клику?
Вот мой код
Intent internet = new Intent();
internet.setAction(Intent.ACTION_VIEW);
internet.addCategory(Intent.CATEGORY_BROWSABLE);
internet.setData(Uri.parse("www.google.com"));
pIntent = PendingIntent.getBroadcast(ctx, widgetID, internet, 0);
widgetView.setOnClickPendingIntent(R.id.tvBrowser, pIntent);
Думал что не поскуает из-за uses-permission, но я его добавил (<uses-permission android:name="android.permission.INTERNET" />) и все равно не работает