Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Chernoff20
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28
#1

Действие на кнопку физическую кнопку Меню - Программирование Android

15.05.2013, 15:32. Просмотров 1064. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 15:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Действие на кнопку физическую кнопку Меню (Программирование Android):

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

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

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

Как убрать кнопку "меню"? - Программирование Android
Как убрать кнопку меню ?:umnik: http://s7.********************/uploads/images/2015/01/5930735c5bb9d4ddc179f757b1667b28.png

Скрыть пустую кнопку - Программирование Android
Есть тест, вопрос и выбор ответов .Количество ответов всегда разные . Как скрыть пустые кнопки-ответы. Заполнение батонов ...

Передача текста в кнопку - Программирование Android
Всем привет. Сейчас пытаюсь сделать свое первое приложение, и выбор пал на судоку. Решил создать поле под судоку из 81 кнопки, и 9 кнопок...

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

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

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

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

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


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

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

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

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

Цитата Сообщение от Chernoff20 Посмотреть сообщение
Или может вы посоветуете как лучше сделать кастомное меню похожее на последнии версии?
https://github.com/Prototik/HoloEverywhere
0
15.05.2013, 18:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:38
Привет! Вот еще темы с ответами:

Нажать кнопку в ListView - Программирование Android
Понимаю что простой вопрос, но не нашел как. Почти все работает Есть простая разметка состоящая из TextView и Button <?xml...

Програмно нажать кнопку - Программирование Android
Почему обрабатывается "KEYCODE_BACK" , а "KEYCODE_MEDIA_PLAY", "KEYCODE_VOLUME_UP"... не обрабатываются при нажатии на кнопку? ...

Прогресс бар в кнопку - Программирование Android
Здравствуйте! Подскажите пожалуйста как сделать кнопку, умеющую на себе отображать прогресс выполнения задачи. В стандартной <Button />...

Добавить кнопку на стандартное окно - Программирование Android
Есть ли способ отображать кнопку "свою" дополнительную кнопку на окно (например), которое отображается во время разговора?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru