Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28

Действие на кнопку физическую кнопку Меню

15.05.2013, 15:32. Показов 1723. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу в своё приложение добавить QuickAction3D, взялся разбирать их пример и взял код
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import android.app.Activity;
import android.os.Bundle;
 
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
 
import android.widget.Button;
import android.widget.Toast;
 
public class ExampleActivity extends Activity {
    //action id
    private static final int ID_UP     = 1;
    private static final int ID_DOWN   = 2;
    private static final int ID_SEARCH = 3;
    private static final int ID_INFO   = 4;
    Button btn2;
        
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.main);
 
        ActionItem nextItem     = new ActionItem(ID_DOWN, "Next", getResources().getDrawable(R.drawable.menu_down_arrow));
        ActionItem prevItem     = new ActionItem(ID_UP, "Prev", getResources().getDrawable(R.drawable.menu_up_arrow));
        ActionItem searchItem   = new ActionItem(ID_SEARCH, "Find", getResources().getDrawable(R.drawable.menu_search));
        ActionItem infoItem     = new ActionItem(ID_INFO, "Info", getResources().getDrawable(R.drawable.menu_info));
        
        //use setSticky(true) to disable QuickAction dialog being dismissed after an item is clicked
        prevItem.setSticky(true);
        nextItem.setSticky(true);
        
        //create QuickAction. Use QuickAction.VERTICAL or QuickAction.HORIZONTAL param to define layout 
        //orientation
        final QuickAction quickAction = new QuickAction(this, QuickAction.VERTICAL);
        
        //add action items into QuickAction
        quickAction.addActionItem(nextItem);
        quickAction.addActionItem(prevItem);
        quickAction.addActionItem(searchItem);
        quickAction.addActionItem(infoItem);
        
        //Set listener for action item clicked
        quickAction.setOnActionItemClickListener(new QuickAction.OnActionItemClickListener() {          
            @Override
            public void onItemClick(QuickAction source, int pos, int actionId) {                
                ActionItem actionItem = quickAction.getActionItem(pos);
                 
                //here we can filter which action item was clicked with pos or actionId parameter
                if (actionId == ID_SEARCH) {
                    Toast.makeText(getApplicationContext(), "Let's do some search action", Toast.LENGTH_SHORT).show();
                } else if (actionId == ID_INFO) {
                    Toast.makeText(getApplicationContext(), "I have no info this time", Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(getApplicationContext(), actionItem.getTitle() + " selected", Toast.LENGTH_SHORT).show();
                }
            }
        });
        
        //set listnener for on dismiss event, this listener will be called only if QuickAction dialog was dismissed
        //by clicking the area outside the dialog.
        quickAction.setOnDismissListener(new QuickAction.OnDismissListener() {          
            @Override
            public void onDismiss() {
                Toast.makeText(getApplicationContext(), "Dismissed", Toast.LENGTH_SHORT).show();
            }
        });
 
        btn2 = (Button) this.findViewById(R.id.btn2);
        btn2.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                quickAction.show(v);
            }
        });             
                
    }
    
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU) {
                              // здесь хочу выполнить quickAction.show(v);
            return true;
        }
        return super.onKeyUp(keyCode, event);
    }
}


Так вот хочу выполнить quickAction.show(v); когда пользователь нажмет кнопку меню, если просто добавляю
quickAction.show(v); Еклипс ругается на v, пишет, что нет типа. Подскажите, пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.05.2013, 15:32
Ответы с готовыми решениями:

Как запретить activity возвращаться на предыдущий экран по нажатию на физическую кнопку back
Как запретить activity возвращаться на предыдущий экран по нажатию на физическую кнопку back?

Действие на кнопку POWER
Только начал изучать андроид =(. Как сделать чтобы при разблокировки смартфона запускался layout в котором будет вводится графический ключ.

Создать кнопку и действие на нее на виджете
Как создать кнопку и действие на нее на виджете? Добавлено через 3 часа 22 минуты Никто не знает?:(

7
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 15:40
что за QuickAction? где вы такое взяли?

Добавлено через 3 минуты
я так понимаю методу нужен view в качестве anchor'a, так предоставьте эму view возле которого должен появится этот QuickAction, например
Java
1
quickAction.show(btn2);
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28
15.05.2013, 15:58  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
что за QuickAction? где вы такое взяли?
Вот здесь http://www.londatiga.net/it/ho... n-android/ там одна главная активити и 3 активити, которые создают меню похожее на меню в старших версиях Андроида.

Цитата Сообщение от V0v1k Посмотреть сообщение
я так понимаю методу нужен view в качестве anchor'a, так предоставьте эму view возле которого должен появится этот QuickAction
А если не использовать btn2 ? Сейчас меню вызывается на кнопке btn2, положение меню на экране устанавливается в другом активити. Я сейчас хочу сделать, чтоб меню показывалось, когда нажимается физическая кнопка меню.
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 16:10
Цитата Сообщение от Chernoff20 Посмотреть сообщение
А если не использовать btn2 ?
можете попробовать использовать рутовый лаяут или проверить как оно поведет себя если передать null.

Добавлено через 3 минуты
как видно по линку который вы дали, этот диалог привязан к конкретному View, это называется "контекстное меню"(такое чаще всего можно увидеть при длинном клике по айтему листа), а то меню что появляется при нажатии кнопки меню не имеет к нему отношение, не нужно их смешивать.
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28
15.05.2013, 16:12  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
можете попробовать использовать рутовый лаяут
Имеется в виду
Java
1
quickAction.show(R.layout.main);
?

Цитата Сообщение от V0v1k Посмотреть сообщение
проверить как оно поведет себя если передать null.
Имеется в виду
Java
1
quickAction.show(null);
?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 16:21
Цитата Сообщение от Chernoff20 Посмотреть сообщение
Имеется в виду
Java
1
quickAction.show(R.layout.main);
?
нет, нужно присвоить id корневому лаяуту в main, а потом использовать findViewById.


Цитата Сообщение от Chernoff20 Посмотреть сообщение
Java
1
quickAction.show(null);
да, но сомневаюсь что такое прокатит, все зависит от реализации QuickAction.

перечитайте мой предыдущий ответ и задумайтесь нужен ли вам QuickAction.

Добавлено через 3 минуты
здесь можете подробнее почитать про типы меню
http://developer.android.com/g... menus.html
0
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28
15.05.2013, 16:28  [ТС]
Цитата Сообщение от V0v1k Посмотреть сообщение
можете попробовать использовать рутовый лаяут или проверить как оно поведет себя если передать null.

Добавлено через 3 минуты
как видно по линку который вы дали, этот диалог привязан к конкретному View, это называется "контекстное меню"(такое чаще всего можно увидеть при длинном клике по айтему листа), а то меню что появляется при нажатии кнопки меню не имеет к нему отношение, не нужно их смешивать.
Я вообще хочу сделать кастомное меню для старых версий Андроида, что было похоже на меню последних версий, но было одинаковым везде. Не используя библиотеку Sherlock Action Bar.
Но моём телефоне стоит 2.3.6, там в приложении YouTube при нажатии на физическую кнопку меню, появляется менюшка, похожая на контекстное, но прижата с нижнему краю экрана.
Или может вы посоветуете как лучше сделать кастомное меню похожее на последнии версии?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 18:38
ну, QuickAction это именно контекстное меню.

Цитата Сообщение от Chernoff20 Посмотреть сообщение
Или может вы посоветуете как лучше сделать кастомное меню похожее на последнии версии?
https://github.com/Prototik/HoloEverywhere
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.05.2013, 18:38
Помогаю со студенческими работами здесь

Одно и тоже действие при нажатии на меню и кнопку
У меня в программе есть меню и кнопка. Есть procedure TForm1.N2Click(Sender: TObject), к которой написан код и procedure...

Как создать кнопку "назад (отменить действие)" в меню?
помогите пожалуйста... Форма с базой данных, нужно в меню добавить кнопку "отменитьь действие"

Сделать одну кнопку, которая будет выполнять сначала действие первой кнопки, а затем действие второй
Здорова. Есть две кнопки, на которых по нажатию выполняются два скрипта: <input type="image"...

Действие по нажатию на кнопку
Приветствую. Есть проект на ASP Net (VS 10), в ней одна html-ка - форма обратной связи. Код формы: <!DOCTYPE html...

Действие на любую кнопку
Нажимаю любую кнопку на клавиатуре { какоето действие } Как оформить кто помнит?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru