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

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 19 июл 2019, 06:55

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




Начать новую тему Ответить на тему  [ Сообщений: 171 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
 Заголовок сообщения: Урок 15. Контекстное меню
СообщениеДобавлено: 12 сен 2011, 03:00 
Администратор
Аватар пользователя

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

- создадим контекстное меню

Click here to read this article!

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


Последний раз редактировалось damager82 28 апр 2017, 10:31, всего редактировалось 11 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 03 апр 2012, 16:23 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
В уроке есть реплика
Цитата:
- ContextMenu.ContextMenuInfo – содержит доп.информацию, когда контекстное меню вызвано для элемента списка. Пока мы это не используем, но когда будем изучать списки увидим, что штука полезная.

Возможно я пропустил, но очень хотелось бы увидеть использование этой возможности. Сейчас столкнулся именно с такой задачей - нужно открыть контекстное меню для элемента списка ListView, это получается. А вот получить тот элемент списка на котором клацнули - не выходит.
Подскажите, пожалуйста


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 04 апр 2012, 10:15 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
andev писал(а):
Возможно я пропустил, но очень хотелось бы увидеть использование этой возможности. Сейчас столкнулся именно с такой задачей - нужно открыть контекстное меню для элемента списка ListView, это получается. А вот получить тот элемент списка на котором клацнули - не выходит.


А урок 51,52 смотрели?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 04 апр 2012, 10:26 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Нет, прочел название про CursorAdapter и не предположил, что там может рассматриваться и необходимый мне функционал :)
Спасибо


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 04 апр 2012, 10:45 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
Не забывайте про поиск. Он на сайте есть, справа сверху )
Или его там совсем не видно?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 12:40 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Так, хорошо, посмотрел, возник другой вопрос
У меня ситуация следующая - в ListView отображен список абонентов, у каждого может быть от 1 до нескольких телефонов.
При щелчке на абоненте мне нужно в случае 1 телефона возвращать через PutExtra этот телефон назад (эта активность вызывается для получения телефона startForResult), а в случае нескольких телефонов нужно показывать что-то наподобие контекстного меню с выбором этих телефонов и при выборе одного из них так же его возвращать.
Следуя логике урока, я должен зарегистрировать мой ListView на создание контекстного меню при помощи registerForContextMenu(lvSimple) и далее все действия производить в нем. Однако, если у меня 1 телефон, то ничего вызывать не нужно и сразу можно его возвращать, т.е. было бы предпочтительнее на ListView слушать onListItemClick(), при выборе пункта определять его и проверять

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         @Override
  2.         protected void onListItemClick(ListView l, View v, int position, long id) {
  3.                 AbonentEntity entity = abonentAdapter.getItem(position);
  4.                 int count = entity.getPhonesCount();
  5.                
  6.                 if (count == 1) {
  7.                         String number = entity.getPhones().get(0);
  8.                         Intent intent = new Intent();
  9.                         intent.putExtra("number", number);
  10.                         setResult(RESULT_OK, intent);
  11.                         this.finish();
  12.                        
  13.                 } else if (count > 1) {
  14.                         // Создание контекстного меню
  15.                 }
  16.  


Как лучше сделать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 13:51 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Скорее всего, лучше будет использовать AlertDialog как 62 уроке.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 14:01 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
да вот тоже на него подумал, сейчас попробую реализовать


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 14:54 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Сделал, но весьма неуклюже, может быть кто-то предложит более простое решение?
http://zalil.ru/33069255


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 16:58 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Контекстное меню не на много лучше выглядит. Точнее так же, только без заголовка.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 13 апр 2012, 23:19 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
я не в плане внешнего вида.
первое что беспокоит - передача массива телефонов через переменную класса (есть Bundle args но не совсем понял как использовать)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 14 апр 2012, 11:18 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
А зачем переписывать телефоны в массив если можно использовать ArrayAdapter? К тому же список телефонов хранится в ArrayList. Достаточно передать в диалог выбранного абонента (через Bundle args), а он пусть сам достает список телефонов.
Bundle используется почти так же как и Extras, только передается через параметры. Там ничего сложного нет.

Кстати, телефоны как хранятся, случайно не в базе данных?

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 14 апр 2012, 18:28 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
нет, не в БД, подсасываются при каждом включении приложения в коллекцию типа Abonent, т.к. хранить их в БД не вижу никакой практической выгоды.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 22 май 2012, 23:59 

Зарегистрирован: 22 май 2012, 23:35
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
В данный момент контекстное меню всплывает в одном и том же месте - чуть ниже "Text size".
А как сделать, чтобы контекстное меню для "Text color" всплывало чуть ниже "Text color", а для "Text size" - чуть ниже "Text size"?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 29 май 2012, 19:05 

Зарегистрирован: 29 май 2012, 18:50
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
подскажите, у мен куча EditText и я всем им повесил одинаковое меню
как мне теперь определить из какого EditText было вызванно меню?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 29 май 2012, 21:13 

Зарегистрирован: 14 май 2012, 16:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
alex6999 писал(а):
подскажите, у мен куча EditText и я всем им повесил одинаковое меню
как мне теперь определить из какого EditText было вызванно меню?

В вызов onCreateContextMenu (ContextMenu menu, View v, ContextMenuInfo menuInfo) передается объект View v-это и есть тот объект с которого пришел вызов контекстного меню, в вашем случае EditText


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 29 май 2012, 21:44 

Зарегистрирован: 29 май 2012, 18:50
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
но обрабатываю я нажатие в onContextItemSelected(MenuItem item)
где тут view?

хотя....
правильно-ли понял, onCreateContextMenu вызывается каждый раз при долгом нажии пальцем и мне надо просто запомнить обьект в переменную и потом пользоватся этой переменной в onContextItemSelected?
немного корявенько.

однако, если onCreateContextMenu вызывается при вызове registerForContextMenu, то такой метод не сработает.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 29 май 2012, 21:55 

Зарегистрирован: 14 май 2012, 16:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
alex6999 писал(а):
но обрабатываю я нажатие в onContextItemSelected(MenuItem item)
где тут view?

хотя....
правильно-ли понял, onCreateContextMenu вызывается каждый раз при долгом нажии пальцем и мне надо просто запомнить обьект в переменную и потом пользоватся этой переменной в onContextItemSelected?
немного корявенько.

Если нужно производить действия над объектом из которого вызвано контекстное меню, похоже так и нужно сделать. Разрабы не посчитали нужным передавать объект в обработчик выбора пунктов.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 29 май 2012, 22:10 

Зарегистрирован: 29 май 2012, 18:50
Сообщений: 13
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
спасибо, заработало.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 15. Контекстное меню
СообщениеДобавлено: 07 июл 2012, 13:07 

Зарегистрирован: 07 июл 2012, 12:48
Сообщений: 3
Откуда: где? где? в Караганде!
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравстуйте!

У меня ругается
public void onCreateContextMenu(ContextMenu ...

пишет, что void не подходит для onCreateContextMenu, но если уберу void, то дает пять быстрых решений

create class "ContextMenu" in package "onCreateContextMenu"
create interface {the same}
create enum {the same}
change to onCreateCOntextMenuListener(android.view.View)
fix setup


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

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


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

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