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

По нажатию не открывается МЕНЮ - Android

Восстановить пароль Регистрация
 
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,527
Записей в блоге: 2
28.08.2015, 13:30     По нажатию не открывается МЕНЮ #1
Почему может не срабатывает openOptionsMenu ?

А кнопка "меню" устройства работает...

Кликните здесь для просмотра всего текста
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package sлджтл;
 
import android.app.Activity;
import android.content.Context;
import android.content.pm.FeatureInfo;
import android.os.Bundle;
import android.support.annotation.MenuRes;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
 
 
 
public class MainActivity extends AppCompatActivity
        implements NavigationDrawerFragment.NavigationDrawerCallbacks {
 
    /**
     * Fragment managing the behaviors, interactions and presentation of the navigation drawer.
     */
    private NavigationDrawerFragment mNavigationDrawerFragment;
    FragmentManager fragmentManager;
    /**
     * Used to store the last screen title. For use in {@link #restoreActionBar()}.
     */
    private CharSequence mTitle;
    public Menu mMenu;
    private GetmessageAt GetmessageAt_;
    private GlobalClass GlobalClasses;
    private Context ctx;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ctx = this;
        GlobalClasses = ((GlobalClass) GlobalClass.GetMyApplication());
        mNavigationDrawerFragment = (NavigationDrawerFragment)
                getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
        mTitle = getTitle();
 
        // Set up the drawer.
        mNavigationDrawerFragment.setUp(
                R.id.navigation_drawer,
                (DrawerLayout) findViewById(R.id.drawer_layout));
 
    }
 
    @Override
    public void onNavigationDrawerItemSelected(final int position) {
        // update the main content by replacing fragments
   fragmentManager = getSupportFragmentManager();
///...
///...
///...
///...
 
  }
 
 
 
    public void restoreActionBar() {
        ActionBar actionBar = getSupportActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle(mTitle);
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        if (!mNavigationDrawerFragment.isDrawerOpen()) {
            // Only show items in the action bar relevant to this screen
            // if the drawer is not showing. Otherwise, let the drawer
            // decide what to show in the action bar.
            getMenuInflater().inflate(R.menu.main, menu);
            restoreActionBar();
            mMenu = menu;
            return true;
        }
 
 
        return super.onCreateOptionsMenu(menu);
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
 
        if (id ==R.id.MenuIcon){
            Log.i("MyLogIlnar", "OpenMenu");         
          ((AppCompatActivity) MainActivity.this).openOptionsMenu(); // не работает
            return true;
        }
 
   
        return super.onOptionsItemSelected(item);
    }
 
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2015, 13:30     По нажатию не открывается МЕНЮ
Посмотрите здесь:

Android Обновление WebWiev по нажатию на уведомление
Авторизация по нажатию кнопки Android
Android Смена фото по нажатию кнопки
GridView. Изменение бекграунда по нажатию Android
Android Смена картинки по нажатию
Android Вызов телефона, по нажатию кнопки
Android Меню только по нажатию кнопки меню
Android Звук по нажатию на button
Затемнить экран по нажатию на FloatingActionButton Android
WebView - не открывается FilePicker по нажатию кнопки Android
Android Выключение экрана по нажатию кнопки
Очистка StringBuilder по нажатию кнопки Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
не спать!
1881 / 1615 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 1
28.08.2015, 13:34     По нажатию не открывается МЕНЮ #2
А какое отношение Drawer имеет к тому меню что должно открываться?
В тулбаре справа - одно меню, в дравере - совсем другое.
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,527
Записей в блоге: 2
28.08.2015, 13:59  [ТС]     По нажатию не открывается МЕНЮ #3
Паблито,
Не совсем понял

Вы на счет бокового меню? - я не его пытаюсь открыть, а меню которое res -> menu (Menu.java)
Паблито
не спать!
1881 / 1615 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 1
28.08.2015, 14:11     По нажатию не открывается МЕНЮ #4
сначала надо проверить, выполняется ли вообще это условие
Java
1
if (!mNavigationDrawerFragment.isDrawerOpen())
вообще это извращение, спрашивать у фрагмента - не открыт ли дровер, в то время когда у самого дроверя есть соответствующий метод

еще вопрос к чему этот вызов restoreActionBar() ? из onOptionsItemSelected - непонятно и ни к месту

это условие
Java
1
2
3
4
5
if (id ==R.id.MenuIcon){
            Log.i("MyLogIlnar", "OpenMenu");         
          ((AppCompatActivity) MainActivity.this).openOptionsMenu(); // не работает
            return true;
        }
вообще полный бред, что мы делаем? нажатие на что проверяем и что открываем? меню само открывается, без единой строчки кода
ILNAR_93
Android
212 / 212 / 21
Регистрация: 19.01.2013
Сообщений: 1,527
Записей в блоге: 2
28.08.2015, 14:35  [ТС]     По нажатию не открывается МЕНЮ #5
Цитата Сообщение от Паблито Посмотреть сообщение
вообще это извращение, спрашивать у фрагмента
Ну это надо разработчикам Android Studio говорить Это как бы автоматически генерируется

Цитата Сообщение от Паблито Посмотреть сообщение
еще вопрос к чему этот вызов restoreActionBar()
опять таки авто генерация этого кода


Цитата Сообщение от Паблито Посмотреть сообщение
вообще полный бред, что мы делаем? нажатие на что проверяем и что открываем?
Зачем бред? проверяем т.к. там несколько возможных ID.

Цитата Сообщение от Паблито Посмотреть сообщение
меню само открывается, без единой строчки кода
если нажать на кнопку на самом устройстве.
http://sbm.1c.ru/upload/medialibrary...f9393f4b2f.png


p.s.

Как я понял openOptionsMenu не выполняется если Активность наследуется от AppCompatActivity.
Если наследовать от Activity то openOptionsMenu открывает Menu
Паблито
не спать!
1881 / 1615 / 500
Регистрация: 12.05.2014
Сообщений: 5,836
Завершенные тесты: 1
28.08.2015, 14:43     По нажатию не открывается МЕНЮ #6
я уверен, половина проблем уйдет сразу если переделать все на Toobar, вместо ActionBar
сейчас вызываются какие-то странные методы в странной последовательности и автогенерируется странный и лишний код
Yandex
Объявления
28.08.2015, 14:43     По нажатию не открывается МЕНЮ
Ответ Создать тему
Опции темы

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