Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Вот такое меню как лучше реализовывать?
Русскоязычный чат Android разработчиков https://gitter.im/rus-speaking/android
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
tvv_yar, спасибо, твой пост помог. Удалил сначала фрагмент, но не показывались пункты меню со второй группы. После замены библиотеки android.support.v7.app.ActionBarActivity на android.app.Activity и наследования MainActivity от Activity все заработало как надо.
-
- Сообщения: 4
- Зарегистрирован: 18 июн 2014, 11:29
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Подскажите пожалуйста, пробую создать боковое меню в своем приложении на основании примера: 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 и как? Заранее спасибо.
<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 и как? Заранее спасибо.
-
- Сообщения: 4
- Зарегистрирован: 18 июн 2014, 11:29
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Разобрался!!! Необходимо вместо android:choiceMode="singleChoice" использовать android:choiceMode="multipleChoice"
Баг с меню
Небольшой баг. При запуске на эмуляторе 4.0.3 метод onPrepareOptionsMenu вызывается при старте приложения, а не при первом вызове меню. При повторном и следующих вызовах меню метод onPrepareOptionsMenu вызывается при показе меню. Воспроизводим баг:
- запускаем приложение.
- cтавим галочку на расширеный показ.
- вызываем меню.
- видим сокращенное меню. (((
Похоже, что при запуске приложения меню показывается и скрывается, чтобы исключить фризы при первом показе меню. Кто сталкивался с подобным, как сделать работу примера корректной?
- запускаем приложение.
- cтавим галочку на расширеный показ.
- вызываем меню.
- видим сокращенное меню. (((
Похоже, что при запуске приложения меню показывается и скрывается, чтобы исключить фризы при первом показе меню. Кто сталкивался с подобным, как сделать работу примера корректной?
Урок 14. Решение
Нашел решение проблемы.
http://stackoverflow.com/questions/1288 ... r-the-firs
http://stackoverflow.com/questions/1288 ... r-the-firs
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Помогите плз. Код был скопирован из урока, что ни делай - в меню всегда вылазит 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-меню.
onCreateOptionsMenuПомогите плз.
PS Еще пару слов, найдите его в уроке и сравните
Последний раз редактировалось Donart 05 авг 2014, 17:28, всего редактировалось 1 раз.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
А еще пару слов?:) Имя метода написано без ошибок, AndroidStudio ни на что не ругается, т.е. метод в импортах доступен...Donart писал(а):onCreateOptionsMenuПомогите плз.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Это код для варианта с mymenu.xml (2-я часть урока).Donart писал(а):найдите его в уроке и сравните
onCreateOptionsMenu - взят из урока. Хотя счас скопипастил его еще раз, конечно не помогло: в меню всегда 6 пунктов.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Про какой код идет речь. Вы что издеваетесьPolundra писал(а):Это код для варианта с mymenu.xml (2-я часть урока).Donart писал(а):найдите его в уроке и сравните
Программное меню(первая часть урока)
[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-меню.
Ответ нашелся здесь: viewtopic.php?f=3&p=29395#p29395
Все заработало, AndroidStudio по дефолту наследовало не тот класс (ActionBarActivity)
Все заработало, AndroidStudio по дефолту наследовало не тот класс (ActionBarActivity)
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
вопрос не совсем по теме урока.
пишу все уроки без копипаста и столкнулся с такой проблемкой, когда начинаю писать r.id. этот глупый эклипс меняет набранный мною код на android.r.id. там естесно нет элементов из файла r.java, + добавляется в импорт import android.R; после чего все набранные до этого айдишники выделяются ошибкой.
как это вылечить? надоело удалять import android.R; да и каждый раз удалять android. перед R тоже както не очень приятно.
пишу все уроки без копипаста и столкнулся с такой проблемкой, когда начинаю писать r.id. этот глупый эклипс меняет набранный мною код на android.r.id. там естесно нет элементов из файла r.java, + добавляется в импорт import android.R; после чего все набранные до этого айдишники выделяются ошибкой.
как это вылечить? надоело удалять import android.R; да и каждый раз удалять android. перед R тоже както не очень приятно.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
скажите пожайлуста, с помощью меню можно изменить настройки одного из методов программы?!
Ну например MediaRecorder пишет в программе звук с микрофона, нужну предоставить возможность выбора записи разговора...
Как связать пункт меню с активацией источнока звука?
Заранее благодарен.
Ну например MediaRecorder пишет в программе звук с микрофона, нужну предоставить возможность выбора записи разговора...
Как связать пункт меню с активацией источнока звука?
Заранее благодарен.
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
спасибо за совет))
дельный......
дельный......
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Игорь, какой вопрос - такой ответ.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Вопрос вроде бы прост ( для меня так точно)) )....
Суть его заключается в следующем: есть приложение "диктофон", в нем есть метод startRecord(), в этом методе активируется микрофон, для записи звука: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Есть контекстное меню....
Так вот: как связать пункт в меню с методом активизации микрофона, и из меню изменить запись звука на: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
Ну не говорю о выборе папки для зиписа файлов.....
Суть его заключается в следующем: есть приложение "диктофон", в нем есть метод startRecord(), в этом методе активируется микрофон, для записи звука: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
Есть контекстное меню....
Так вот: как связать пункт в меню с методом активизации микрофона, и из меню изменить запись звука на: mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);
Ну не говорю о выборе папки для зиписа файлов.....
-
- Сообщения: 2
- Зарегистрирован: 22 окт 2014, 11:05
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Написал проект. Запустил на телефоне, но меню не отображается. Даже нет кнопки открытия меню.
вот код:
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);
}
вот код:
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);
}
-
- Сообщения: 3
- Зарегистрирован: 26 фев 2015, 16:20
Re: Урок 14. Меню, группы, порядок. MenuInflater и xml-меню.
Только начинаю изучать Android, но имею некоторый опыт программирования на Java, и заметил в коде такой момент вот здесь:
Создаётся StringBuilder и используется конкатенация строк через "+", что создаёт новый StringBuilder, который соединяет строки и затем выполняет toString и так 4 раза.
Корректнее, на мой взгляд, с точки зрения быстродействия и использования памяти, будет применить методы уже созданного StringBuilder'а и избежать ненужных телодвижений:
Код: Выделить всё
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 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-меню.
На самом деле все это бесполезно. Компилятор и иак все плюсы переводит к StringBuilder- у
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198