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

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

Восстановить пароль Регистрация
 
Chernoff20
0 / 0 / 0
Регистрация: 06.05.2013
Сообщений: 28
15.05.2013, 15:32     Действие на кнопку физическую кнопку Меню #1
Здравствуйте. Хочу в своё приложение добавить 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, пишет, что нет типа. Подскажите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 15:32     Действие на кнопку физическую кнопку Меню
Посмотрите здесь:

Android Создать кнопку и действие на нее на виджете
Назначить символ на кнопку клавиатуры Android
Android Как запретить activity возвращаться на предыдущий экран по нажатию на физическую кнопку back
Android Как убрать кнопку "меню"?
Прогресс бар в кнопку Android
Android Не работает selector, установленный на кнопку
Android Ошибка при нажатии на кнопку
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 15:40     Действие на кнопку физическую кнопку Меню #2
что за QuickAction? где вы такое взяли?

Добавлено через 3 минуты
я так понимаю методу нужен view в качестве anchor'a, так предоставьте эму view возле которого должен появится этот QuickAction, например
Java
1
quickAction.show(btn2);
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, положение меню на экране устанавливается в другом активити. Я сейчас хочу сделать, чтоб меню показывалось, когда нажимается физическая кнопка меню.
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 16:10     Действие на кнопку физическую кнопку Меню #4
Цитата Сообщение от Chernoff20 Посмотреть сообщение
А если не использовать btn2 ?
можете попробовать использовать рутовый лаяут или проверить как оно поведет себя если передать null.

Добавлено через 3 минуты
как видно по линку который вы дали, этот диалог привязан к конкретному View, это называется "контекстное меню"(такое чаще всего можно увидеть при длинном клике по айтему листа), а то меню что появляется при нажатии кнопки меню не имеет к нему отношение, не нужно их смешивать.
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);
?
V0v1k
1157 / 981 / 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
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 при нажатии на физическую кнопку меню, появляется менюшка, похожая на контекстное, но прижата с нижнему краю экрана.
Или может вы посоветуете как лучше сделать кастомное меню похожее на последнии версии?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 18:38     Действие на кнопку физическую кнопку Меню
Еще ссылки по теме:

Android Нажать кнопку в ListView
Добавление виджета через кнопку Android
Програмно нажать кнопку Android
Android Действие на кнопку POWER
Android Передача текста в кнопку

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

Или воспользуйтесь поиском по форуму:
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
15.05.2013, 18:38     Действие на кнопку физическую кнопку Меню #8
ну, QuickAction это именно контекстное меню.

Цитата Сообщение от Chernoff20 Посмотреть сообщение
Или может вы посоветуете как лучше сделать кастомное меню похожее на последнии версии?
https://github.com/Prototik/HoloEverywhere
Yandex
Объявления
15.05.2013, 18:38     Действие на кнопку физическую кнопку Меню
Ответ Создать тему
Опции темы

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