Урок 15. Контекстное меню
Re: Урок 15. Контекстное меню
Все, решил проблему. Не закрыл фигурной скобкой перед своей "проблемой".
Re: Урок 15. Контекстное меню
Почему Вы постоянно стараетесь уйти от описания UI в XML. Гайды от Goolge рекомендуют именно этот подход, в последствии изменять будет проще, без перекомпиляции.
ИМХО Лучше сразу привыкать к правильному
MyActivity.javacolor_context_menu.xml
ИМХО Лучше сразу привыкать к правильному
MyActivity.java
Код: Выделить всё
tvColor.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.color_context_menu, contextMenu);
contextMenu.setHeaderTitle(R.string.color_context_menu_header);
}
});
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_color_red" android:title="Красный"/>
<item android:id="@+id/menu_color_blue" android:title="Синий"/>
<item android:id="@+id/menu_color_green" android:title="Зеленый"/>
</menu>
Re: Урок 15. Контекстное меню
В данном абзаце ссылкаВспоминаем наш урок по обработчикам и смотрим хелп по методу setOnCreateContextMenuListener (View.OnCreateContextMenuListener l). Получается, что View в качестве обработчика создания контекстного меню использует объект this. В данном случае, этот код в Activity, значит this – это Activity и есть. Т.е. когда View хочет показать контекстное меню, оно обращается к обработчику (Activity), а он уже выполняет свой метод onCreateContextMenu. Т.е. тот же самый принцип, что и при обычном нажатии (Click).
грузит страницу "About" .наш урок по обработчикам
Re: Урок 15. Контекстное меню
Спасибо, пофиксил!Daniil писал(а):В данном абзаце ссылкагрузит страницу "About" .наш урок по обработчикам
Re: Урок 15. Контекстное меню
Не получается вызвать контекстное меню для ImageButton в PopupWindow.
Re: Урок 15. Контекстное меню
Классные уроки! Спасибо большое, damager82 Только иногда не все с первого раза понятно, наверное потому что с java плохо знаком, буду учить)
Вот что получилось
Вот что получилось
Код: Выделить всё
package com.example.contextmenu;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
final int MENU_COLOR_RED = 1;
final int MENU_COLOR_GREEN = 2;
final int MENU_COLOR_BLUE = 3;
final int MENU_SIZE_22 = 4;
final int MENU_SIZE_26 = 5;
final int MENU_SIZE_30 = 6;
TextView tvColor, tvSize;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tvColor = (TextView) findViewById(R.id.tvColor);
tvSize = (TextView) findViewById(R.id.tvSize);
registerForContextMenu(tvColor);
registerForContextMenu(tvSize);
}
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuinfo){
switch (v.getId()){
case R.id.tvColor:
menu.add(0, MENU_COLOR_RED, 0, "RED");
menu.add(0, MENU_COLOR_GREEN, 0, "GREEN");
menu.add(0, MENU_COLOR_BLUE, 0, "BLUE");
break;
case R.id.tvSize:
menu.add(0, MENU_SIZE_22, 0, "22");
menu.add(0, MENU_SIZE_26, 0, "26");
menu.add(0, MENU_SIZE_30, 0, "30");
break;
}
}
public boolean onContextItemSelected(MenuItem item){
switch (item.getItemId()){
case MENU_COLOR_RED:
tvColor.setTextColor(Color.RED);
Toast.makeText(this, "Text color - RED!", Toast.LENGTH_SHORT).show();
break;
case MENU_COLOR_GREEN:
tvColor.setTextColor(Color.GREEN);
Toast.makeText(this, "Text color - GREEN!", Toast.LENGTH_SHORT).show();
break;
case MENU_COLOR_BLUE:
tvColor.setTextColor(Color.BLUE);
Toast.makeText(this, "Text color - BLUE!", Toast.LENGTH_SHORT).show();
break;
case MENU_SIZE_22:
tvSize.setTextSize(22);
Toast.makeText(this, "Text size - 22!", Toast.LENGTH_SHORT).show();
break;
case MENU_SIZE_26:
tvSize.setTextSize(26);
Toast.makeText(this, "Text size - 26!", Toast.LENGTH_SHORT).show();
break;
case MENU_SIZE_30:
tvSize.setTextSize(30);
Toast.makeText(this, "Text size - 30!", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
Re: Урок 15. Контекстное меню
Я вот заюзал xml, и не могу понять как обрабатывать нажатия. item.getItemId() выдают fasle. в итоге никакого действия не происходит при выборе пункта контекстного меню.скок левой писанины в коде =) xml юзай
Разработка сайтов любой сложности.
Re: Урок 15. Контекстное меню
Вместо
case MENU_COLOR_BLUE:
нужно писать:
case R.id.menu_item_id: (тот Id который вы прописали в Xml)
Тут все подробно описано http://developer.android.com/guide/topics/ui/menus.html
case MENU_COLOR_BLUE:
нужно писать:
case R.id.menu_item_id: (тот Id который вы прописали в Xml)
Тут все подробно описано http://developer.android.com/guide/topics/ui/menus.html
Re: Урок 15. Контекстное меню
Доброе время суток!
Появилась проблема: где комментарий , там eclipse выдает ошибку.
Ума не приложу в чем дело.
Появилась проблема: где комментарий , там eclipse выдает ошибку.
Код: Выделить всё
package ru.startandroid.develop.contextmenu;
import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tvSize, tvColor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //activity_main cannot be resovled or is not a field
tvColor = (TextView) findViewById(R.id.tvColor); //аналогичный текст ошибки только для tvColor
tvSize = (TextView) findViewById(R.id.tvSize); // и tvSize хотя в R.java id присутствует
registerForContextMenu(tvColor);
registerForContextMenu(tvSize);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu); //здесь тоже, для menu
return true;
}
}
Re: Урок 15. Контекстное меню
уберите строку import android.R;
Re: Урок 15. Контекстное меню
Спасибо, чувствую себя не много глупоAndreyI писал(а):уберите строку import android.R;
Re: Урок 15. Контекстное меню
Да ничего страшного, многие на этом спотыкаются поначалу.
Re: Урок 15. Контекстное меню
Здравствуйте!
Ругается при попытке добавления контекстного меню методом add в onCreateContextMenu(...). add подсвечивается красным и выпадает сообщение: The method add(int, int, int, String) is undefined for the type ContextMenu. Из-за чего это может быть? Вроде весь импорт который надо сделал:
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
Ругается при попытке добавления контекстного меню методом add в onCreateContextMenu(...). add подсвечивается красным и выпадает сообщение: The method add(int, int, int, String) is undefined for the type ContextMenu. Из-за чего это может быть? Вроде весь импорт который надо сделал:
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
Re: Урок 15. Контекстное меню
Это весь импорт? А где import android.view.ContextMenu ?grinbo писал(а):Здравствуйте!
Ругается при попытке добавления контекстного меню методом add в onCreateContextMenu(...). add подсвечивается красным и выпадает сообщение: The method add(int, int, int, String) is undefined for the type ContextMenu. Из-за чего это может быть? Вроде весь импорт который надо сделал:
import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
Re: Урок 15. Контекстное меню
Здравствуйте!
Объясните, а то я уже запуталась..
читала на девелопер.андроид, что контекстное меню уже устарело, и надобно использовать менюшку Action Bar, ту что сверху, и оно может складываться - справа кнопочка с точками, по которой выпадает список не поместившихся пунктов. Это все понятно.
Но когда читаю об этом новом меню, там же говорят, что в пункты этого меню лучше помещать элементы-команды, которые касаются активити глобально, т.е. предполагаемые глобальные действия, а не действия с отдельными элементами экрана (тут я понимаю, что это относится и к строчкам листвью). Т.е. например я понимаю, что туда лучше положить пункт "настройки" или "поиск", а вот действия с элементами списка, которые раньше были в контекстном меню - куда теперь девать??
Хочется вместо контекстного внизу иметь панельку с кнопками, похожую на ActionView, но запихивать туда команды локальные, к строчкам списка - создатЬ, удалить, отредактировать пункт списка.
Каким элементом дизайна это правильно осуществить?
Еще что-то об этом нписано тут http://developer.android.com/design/pat ... ction.html
Но я не пойму - как этот Contextual Action Bar совмещается с Action Bar? ведь для пользователя это не очевидно, что меню по трем точкам изменилось. Ну, допустим, оно изменилось, в нем исчезли пункты "справка" или "поиск", и теперь там "удалить" или "создать". Как же пользователю вызвать "справку"? не отменять же выделение..
Объясните, а то я уже запуталась..
читала на девелопер.андроид, что контекстное меню уже устарело, и надобно использовать менюшку Action Bar, ту что сверху, и оно может складываться - справа кнопочка с точками, по которой выпадает список не поместившихся пунктов. Это все понятно.
Но когда читаю об этом новом меню, там же говорят, что в пункты этого меню лучше помещать элементы-команды, которые касаются активити глобально, т.е. предполагаемые глобальные действия, а не действия с отдельными элементами экрана (тут я понимаю, что это относится и к строчкам листвью). Т.е. например я понимаю, что туда лучше положить пункт "настройки" или "поиск", а вот действия с элементами списка, которые раньше были в контекстном меню - куда теперь девать??
Хочется вместо контекстного внизу иметь панельку с кнопками, похожую на ActionView, но запихивать туда команды локальные, к строчкам списка - создатЬ, удалить, отредактировать пункт списка.
Каким элементом дизайна это правильно осуществить?
Еще что-то об этом нписано тут http://developer.android.com/design/pat ... ction.html
Но я не пойму - как этот Contextual Action Bar совмещается с Action Bar? ведь для пользователя это не очевидно, что меню по трем точкам изменилось. Ну, допустим, оно изменилось, в нем исчезли пункты "справка" или "поиск", и теперь там "удалить" или "создать". Как же пользователю вызвать "справку"? не отменять же выделение..
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: Урок 15. Контекстное меню
голова кругом =) конкретней что вы хотите? а то сначала хотите актионбар, потом не хотите. Потом я понял что вам нужна нижняя панелька с кнопочками. Создаёте контролл и присоединяете его к той активити что хотите.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 15. Контекстное меню
Я хочу понять как так хитро заменили контекстное меню на Contextual Action Bar
и как он сочетается с Action Bar для начала.
и как он сочетается с Action Bar для начала.
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: Урок 15. Контекстное меню
Contextual Action Bar у него если не ошибаюсь 11 апи
вот как его делать http://developer.android.com/guide/topi ... ntext-menu
вот как его делать http://developer.android.com/guide/topi ... ntext-menu
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 15. Контекстное меню
я это читала, смысл не в этом.
Поясню еще раз. У нас имеется активити со списком и один экшнбар с элементами меню - типа "настройка", "помощь", "..." т.е. глобальные для активити.
Я выделяю парочку элементов (или один) списка. По-старому я бы вызывала контекстное меню. А андроиддевелоперы говорят - не... устарело! надо вызывать контекстный экшнбар. Вот в чем вопрос, теперь после нажатия на кнопочку с точками пользователю вывалится (по тому, как я поняла!) совсем другое меню- "удалить" "отправить" "сохранить" "поделиться"
Вот я и спрашиваю так это или не так?
а если так, то по-моему как-то странно! выделил допустим пользователь пару строчек списка и хочет справку глянуть, а она тю-тю.. надо выделение снимать и жать на меню.
Так понятно?
Странно это, поэтому я и думаю - что я где-то ошиблась, может английский не так поняла, информации-то много. А реализовать я успею. Не хочется реализовывать то, что меня потом не устроит.
Поясню еще раз. У нас имеется активити со списком и один экшнбар с элементами меню - типа "настройка", "помощь", "..." т.е. глобальные для активити.
Я выделяю парочку элементов (или один) списка. По-старому я бы вызывала контекстное меню. А андроиддевелоперы говорят - не... устарело! надо вызывать контекстный экшнбар. Вот в чем вопрос, теперь после нажатия на кнопочку с точками пользователю вывалится (по тому, как я поняла!) совсем другое меню- "удалить" "отправить" "сохранить" "поделиться"
Вот я и спрашиваю так это или не так?
а если так, то по-моему как-то странно! выделил допустим пользователь пару строчек списка и хочет справку глянуть, а она тю-тю.. надо выделение снимать и жать на меню.
Так понятно?
Странно это, поэтому я и думаю - что я где-то ошиблась, может английский не так поняла, информации-то много. А реализовать я успею. Не хочется реализовывать то, что меня потом не устроит.
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