Урок 21. Создание и вызов Activity

Обсуждение уроков
AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 10 сен 2012, 15:40

У вас свойство у TextView android:layout_height="match_parent" означает, что TextView займет всю высоту экрана, поэтому кнопка не отображается.
измените на android:layout_height="wrap_content"

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 10 сен 2012, 16:07

dil_android писал(а): понял, что textView сохраняется в классе R, и поэтому может быть вызван.
В R классе сохраняется ID вашего TextView который вы разместили в разметке secondactivity.xml
вы указали для этого - android:id="@+id/textView" где "+" означает, что вы желаете, чтобы ID с именем "textView" создался автоматически, если его не существовало до этого.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 10 сен 2012, 16:19

Спасибо за совет.
Думаю, что после начального знакомства с Android как таковым, начать работать в Eclips будет намного легче и проще.

А как насчет заданного вопроса, есть какие нибудь предложения? Повторюсь, мне кажется, что разобравшись в этом конкретном примере, я смогу понять некоторые основополагающие вещи.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 10 сен 2012, 16:34

AndreyI

Спасибо большое. Сегодня смотрел урок 6, так как была догадка что дело в layout. Поэтому и поменял <Linear Layout> на <RelativeLayout>, думая, что кнопка уходит вправо и, поэтому, не видна. Но, одно дело догадываться, а другое дело найти ошибку. Еще раз спасибо. Буду читать дальше и беспокоить людей на форуме своими, может иногда глупыми, вопросами.

Eshkin-Kat
Сообщения: 12
Зарегистрирован: 13 июн 2012, 02:29

Re: Урок 21. Создание и вызов Activity

Сообщение Eshkin-Kat » 30 сен 2012, 19:32

Изображение
ни у кого не ругается здесь? Пробовал заменить на предложенный onlongclicklistener, но тот же результат.
win 7 32, android 2.3

Аватара пользователя
powercat
Сообщения: 508
Зарегистрирован: 20 июл 2012, 11:31

Re: Урок 21. Создание и вызов Activity

Сообщение powercat » 30 сен 2012, 20:54

ну если не критично, то просто в xml сделай ему клик, а тут обработай...примерно так:

Код: Выделить всё

public void btnActTwo_Click(View v){.......}

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 21. Создание и вызов Activity

Сообщение math64 » 01 окт 2012, 14:05

Нужно выбрать "Let 'MainActivity' implement 'OnClickListener'".
Появится новая ругань, там нужно будет добавить реализацию метода интерфейса.

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Урок 21. Создание и вызов Activity

Сообщение brucemax » 14 окт 2012, 02:54

Подскажите пожалуйста как реализовать вызов активити путём сдвига экрана пальцем?

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 21. Создание и вызов Activity

Сообщение KamiSempai » 14 окт 2012, 04:25

brucemax писал(а):Подскажите пожалуйста как реализовать вызов активити путём сдвига экрана пальцем?
Очевидно, Вам нужен ViewPager. На ХабраХабре была статья по его применению. Или имелось ввиду именно использование жеста для вызова активити?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Урок 21. Создание и вызов Activity

Сообщение brucemax » 14 окт 2012, 19:36

KamiSempai писал(а):
brucemax писал(а):Подскажите пожалуйста как реализовать вызов активити путём сдвига экрана пальцем?
Очевидно, Вам нужен ViewPager. На ХабраХабре была статья по его применению. Или имелось ввиду именно использование жеста для вызова активити?
Да именно он. Спасибо большое!!! Да на хабре и не одна статья посвящена этому. Из предисловия к одной из них
Горизонтальная прокрутка экранов — удобная и модная вещь. На Хабре уже был топик, посвященный данной теме. Однако использование ViewFlipper не позволяет с легкостью добиться эффекта привязки, когда экраны двигаются вместе с пальцем. Также нужен механизм автоматической доводки экранов в ту или иную сторону. Примера, где это было бы хорошо разъяснено и реализовано, так и не нашел. В комментариях предлагали посмотреть исходники гугловского кода, где это реализовано. Однако удобнее было бы воспользоваться готовым решением. Такой механизм реализован в Android Support Package. Использовать эту библиотеку можно для версий Android 1.6 и старше. Конкретно нам понадобятся классы ViewPager и PagerAdapter.
понял, что для достойного результата целесообразно использовать Android Support Package, коим я сейчас и займусь. Если вдруг кто этим уже занимался и у него есть полезное напутственное слово, просьба не стесняться =)

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 12:46

Здравствуйте,

Возник такой вопрос. Две Activity А и В. Чтобы запустить В, я использую OnItemClickListener и при помощи Intent передаю из А в В значение int position, которое затем использую.
Возникла необходимость вызова метода, относящегося к Activity B из метода в Activity A. Можно ли использовать для этой цели Intent таким образом, чтобы Activity B не загружалась (т.е. без startActivity())?
Я полагаю, что нет, и, поэтому, хочу задать сразу второй вопрос.
Передачу еще одного int значения из А в В, я хочу осуществить вне метода OnItemClickListener и без вызова Activity В, как это можно сделать? Насколько я понял из Интернета, однозначного решения нет, предлагают использовать SharedPreferences. Это кажется странным для одного значения типа int. По моему, в этом качестве, можно использовать get/set. Какое решение выбрать, с тем, чтобы в дальнейшем передача данных между Activity не вызывала проблем?

Спасибо.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 21. Создание и вызов Activity

Сообщение KamiSempai » 22 окт 2012, 13:53

Если объект класса не создан, в нашем случае это Acivity, вызвать методы этого класса не получится. Однако, если нужный метод оперирует только с параметрами и ни как не использует сам объект, его можно объявить как static и использовать независимо от самого объекта.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 14:40

KamiSempai, здравствуйте.

Попробовал, создав объект класса Activity B, исполняет нормально.
А я могу создавать объект класса Activity B? Не является ли это bad practice в Андроид программировании ? Где-то читал, что не желательно.
По поводу Intent мои сомнения верны, не так ли?
А вот, что Вы думаете по поводу SharePreferences и get/set?

Спасибо.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 21. Создание и вызов Activity

Сообщение KamiSempai » 22 окт 2012, 15:34

Создание Activity для вызова метода - это перебор.
И как Вы собираетесь передавать какие либо значения в Активити В без ее создания? Очевидно, Вы не совсем поняли принципы работы с Activity на андроиде.

И еще. Может стоит подумать о создании отдельно класса, если программный код используется более чем в одном объекте?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 15:55

Речь не идет о создании нового Activity. Есть существующий Activity B в котором исполняемые методы. Так вот, для того, чтобы получить доступ к какому-либо из методов в В, сделать следующее в А: ActivityВ ав = new ActivityВ(); и далее, например, ав.deleteAllItems(); Создать переменную объекта В, в данном случае - это ав, и через нее получить доступ к методам, используемым в В из А.
По поводу Intent мои сомнения верны, не так ли?
А вот, что Вы думаете по поводу SharePreferences и get/set?

Спасибо.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 16:06

И еще один вопрос, который мне кажется интересен для новичков. Можно ли передавать данные через Intent без явного вызова ActivityB через startActivity(); В моем случае я вызываю ActivityB из метода setOnItemClickListener через Intent. Однако, если я хочу передать, какие-то data из А в В без явного вызова В, как это сделать? Если Intent это сделать не позволяет, то какова существующая практика. Два варианта, которые я смог найти в Интернете, я привел ранее.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 17:32

Странно, но вызов метода, через переменную объекта тоже дает ошибку. Перепробовал все вышеперечисленные варианты, ни один не срабатывает. А все, что хочу сделать, это удалить список (и таблицу БД) в Activity B, при вызове метода delete в Activity A (чтобы удаление происходило в обоих Activity). Прямой вызов метода не работает, передавать данные через Intent без явного вызова startActivity(ActivityB), в Андроиде тоже не предусмотрено. Так как быть то?

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 22 окт 2012, 17:55

dil_android писал(а):И еще один вопрос, который мне кажется интересен для новичков. Можно ли передавать данные через Intent без явного вызова ActivityB через startActivity(); В моем случае я вызываю ActivityB из метода setOnItemClickListener через Intent. Однако, если я хочу передать, какие-то data из А в В без явного вызова В, как это сделать? Если Intent это сделать не позволяет, то какова существующая практика. Два варианта, которые я смог найти в Интернете, я привел ранее.
Не совсем понимаю, что вы имеете ввиду под явным и неявными вызовом. Вообще в Андроид под этими понятиями подразумевается обращение непосредственно к классу вызываемого Activity - явный Intent. Второй метод - вызов Activity через Action, тогда система будет подбирать для запуска подходящий Activity через Action Filter или предложит пользователю выбрать, если в системе зарегистрировано несколько фильтров удовлетворяющих требуемому Action - это неявный Intent. И в том и в другом случае в вызываемое Activity можно передавать данные. Смотрите урок 22 там все расписано с иллюстрациями.

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 21. Создание и вызов Activity

Сообщение dil_android » 22 окт 2012, 18:53

Наверное день сегодня такой.
Урок 28. Extras - передаем данные с помощью Intent
Intent intent = new Intent(this, ViewActivity.class);
intent.putExtra("fname", etFName.getText().toString());
intent.putExtra("lname", etLName.getText().toString());
startActivity(intent);
При вызове Intent и передаче данных методом PutExtra обязательно указывать startActivity(intent). Без этого Intent не передает данные с одновременной загрузкой активити. Я хочу передать данные, не загружая активити. Как это сделать?

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Урок 21. Создание и вызов Activity

Сообщение AndreyI » 22 окт 2012, 19:11

Пока вы не вызовете Activity у вас оно не будет создано, как вы собираетесь передавать данные в несуществующее Activity?

Ответить