Страница 8 из 10

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 27 май 2014, 22:15
Atetc
Вот такое меню как лучше реализовывать?

Изображение

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 09 июн 2014, 14:46
Voyager
tvv_yar, спасибо, твой пост помог. Удалил сначала фрагмент, но не показывались пункты меню со второй группы. После замены библиотеки android.support.v7.app.ActionBarActivity на android.app.Activity и наследования MainActivity от Activity все заработало как надо.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 18 июн 2014, 11:44
energomaks2012
Подскажите пожалуйста, пробую создать боковое меню в своем приложении на основании примера: http://developer.android.com/training/i ... rawer.html.

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />

<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>

В данном примере используется ListView, а возможно применить ExpandableList и как? Заранее спасибо.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 18 июн 2014, 12:06
energomaks2012
Разобрался!!! Необходимо вместо android:choiceMode="singleChoice" использовать android:choiceMode="multipleChoice"

Баг с меню

Добавлено: 21 июн 2014, 21:30
Dizzy
Небольшой баг. При запуске на эмуляторе 4.0.3 метод onPrepareOptionsMenu вызывается при старте приложения, а не при первом вызове меню. При повторном и следующих вызовах меню метод onPrepareOptionsMenu вызывается при показе меню. Воспроизводим баг:
- запускаем приложение.
- cтавим галочку на расширеный показ.
- вызываем меню.
- видим сокращенное меню. (((
Похоже, что при запуске приложения меню показывается и скрывается, чтобы исключить фризы при первом показе меню. Кто сталкивался с подобным, как сделать работу примера корректной?

Урок 14. Решение

Добавлено: 28 июн 2014, 16:57
Dizzy
Нашел решение проблемы.
http://stackoverflow.com/questions/1288 ... r-the-firs

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 16:47
Polundra
Помогите плз. Код был скопирован из урока, что ни делай - в меню всегда вылазит 6 элементов (независимо от состояния чекбокса) и даже от версии AVD. Причем и в варианте описания меню в MineActivity, и в варианте с mymenu.xml.
Перечитал всю ветку, вроде что понял то проверил, косяков найти не могу...
На всякий случай вот код:

Код: Выделить всё

package com.example.pastor.p0141_menuadv;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import android.widget.CheckBox;

public class MineActivity extends ActionBarActivity {

    // Элементы экрана
    TextView tv;
    CheckBox chb;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mine);

        // находим эдементы
        tv = (TextView) findViewById(R.id.textView);
        chb = (CheckBox) findViewById(R.id.chbExtMenu);
    }

    // создание меню
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.mymenu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    // обновление меню
    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // TODO Auto-generated method stub
        // пункты меню с ID группы = 1 видны, если в CheckBox стоит галка
        menu.setGroupVisible(1, chb.isChecked());
        return super.onPrepareOptionsMenu(menu);
    }

    // обработка нажатий
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // TODO Auto-generated method stub
        StringBuilder sb = new StringBuilder();

        // Выведем в TextView информацию о нажатом пункте меню
        sb.append("Item Menu");
        sb.append("\r\n groupId: " + String.valueOf(item.getGroupId()));
        sb.append("\r\n itemId: " + String.valueOf(item.getItemId()));
        sb.append("\r\n order: " + String.valueOf(item.getOrder()));
        sb.append("\r\n title: " + item.getTitle());
        tv.setText(sb.toString());

        return super.onOptionsItemSelected(item);
    }
 /*    @Override
       public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.mine, menu);
        return true;
    }

    @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.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }*/
}
Пламенное спасибо!

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 17:09
Donart
Помогите плз.
onCreateOptionsMenu
PS Еще пару слов, найдите его в уроке и сравните

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 17:15
Polundra
Donart писал(а):
Помогите плз.
onCreateOptionsMenu
А еще пару слов?:) Имя метода написано без ошибок, AndroidStudio ни на что не ругается, т.е. метод в импортах доступен...

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 17:59
Polundra
Donart писал(а):найдите его в уроке и сравните
Это код для варианта с mymenu.xml (2-я часть урока).
onCreateOptionsMenu - взят из урока. Хотя счас скопипастил его еще раз, конечно не помогло: в меню всегда 6 пунктов.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 18:26
Donart
Polundra писал(а):
Donart писал(а):найдите его в уроке и сравните
Это код для варианта с mymenu.xml (2-я часть урока).
Про какой код идет речь. Вы что издеваетесь :|
Программное меню(первая часть урока)
[syntax=java5]@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
// добавляем пункты меню
menu.add(0, 1, 0, "add");
menu.add(0, 2, 0, "edit");
menu.add(0, 3, 3, "delete");
menu.add(1, 4, 1, "copy");
menu.add(1, 5, 2, "paste");
menu.add(1, 6, 4, "exit");

return super.onCreateOptionsMenu(menu);
}[/syntax]
XML меню(вторая часть урока)
Если захотите скрыть группу, выполняете тот же метод setGroupVisible и передаете туда R.id.group1 в качестве ID группы.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 05 авг 2014, 18:54
Polundra
Ответ нашелся здесь: viewtopic.php?f=3&p=29395#p29395
Все заработало, AndroidStudio по дефолту наследовало не тот класс (ActionBarActivity)

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 09 авг 2014, 19:15
ikmor
вопрос не совсем по теме урока.
пишу все уроки без копипаста и столкнулся с такой проблемкой, когда начинаю писать r.id. этот глупый эклипс меняет набранный мною код на android.r.id. там естесно нет элементов из файла r.java, + добавляется в импорт import android.R; после чего все набранные до этого айдишники выделяются ошибкой.
как это вылечить? надоело удалять import android.R; да и каждый раз удалять android. перед R тоже както не очень приятно.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 19 авг 2014, 14:48
игорь77
скажите пожайлуста, с помощью меню можно изменить настройки одного из методов программы?!
Ну например MediaRecorder пишет в программе звук с микрофона, нужну предоставить возможность выбора записи разговора...
Как связать пункт меню с активацией источнока звука?
Заранее благодарен.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 20 авг 2014, 12:10
игорь77
спасибо за совет))
дельный......

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 20 авг 2014, 12:40
Foenix
Игорь, какой вопрос - такой ответ.

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 20 авг 2014, 19:04
игорь77
Вопрос вроде бы прост ( для меня так точно)) )....
Суть его заключается в следующем: есть приложение "диктофон", в нем есть метод startRecord(), в этом методе активируется микрофон, для записи звука: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Есть контекстное меню....
Так вот: как связать пункт в меню с методом активизации микрофона, и из меню изменить запись звука на: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
Ну не говорю о выборе папки для зиписа файлов.....

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 20 ноя 2014, 10:20
arguchinsky
Написал проект. Запустил на телефоне, но меню не отображается. Даже нет кнопки открытия меню.
вот код:
public boolean onCreateOptionsMenu(Menu m){
getMenuInflater().inflate(R.menu.menu, m);
return super.onCreateOptionsMenu(m);
}
public boolean onOptionsItemSelected(MenuItem i){
switch (i.getItemId()){
case CLEAN_ID:
tvRes.setText("");
etVal1.setHint("Value 1");
etVal2.setHint("Value 2");
break;
case QUIT_ID:
finish();
break;
}
return super.onOptionsItemSelected(i);
}

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 26 фев 2015, 16:35
mikekekeke
Только начинаю изучать Android, но имею некоторый опыт программирования на Java, и заметил в коде такой момент вот здесь:

Код: Выделить всё

StringBuilder sb = new StringBuilder();

      // Выведем в TextView информацию о нажатом пункте меню 
      sb.append("Item Menu");
      sb.append("\r\n groupId: " + String.valueOf(item.getGroupId()));
      sb.append("\r\n itemId: " + String.valueOf(item.getItemId()));
      sb.append("\r\n order: " + String.valueOf(item.getOrder()));
      sb.append("\r\n title: " + item.getTitle());
      tv.setText(sb.toString());
Создаётся StringBuilder и используется конкатенация строк через "+", что создаёт новый StringBuilder, который соединяет строки и затем выполняет toString и так 4 раза.
Корректнее, на мой взгляд, с точки зрения быстродействия и использования памяти, будет применить методы уже созданного StringBuilder'а и избежать ненужных телодвижений:

Код: Выделить всё

StringBuilder sb = new StringBuilder();

        // Выведем в TextView информацию о нажатом пункте меню
        sb.append("Item Menu");
        sb.append("\r\n groupId: ").append(String.valueOf(item.getGroupId()));
        sb.append("\r\n itemId: ").append(String.valueOf(item.getItemId()));
        sb.append("\r\n order: ").append(String.valueOf(item.getOrder()));
        sb.append("\r\n title: ").append(item.getTitle());
        textV.setText(sb.toString());

Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.

Добавлено: 26 фев 2015, 19:37
Foenix
На самом деле все это бесполезно. Компилятор и иак все плюсы переводит к StringBuilder- у