Страница 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
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- у