Урок 15. Контекстное меню

Обсуждение уроков
Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 02 мар 2014, 21:52

нет, не обязательно. Это очень интересная тема, она связана со многими другими. Советую почитать про основы объектно-ориентированного программирования (ООП). Это база.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Юрий2711
Сообщения: 4
Зарегистрирован: 11 май 2014, 19:14

Re: Урок 15. Контекстное меню

Сообщение Юрий2711 » 11 май 2014, 20:42

в примере было указано 2 списка меню на 2 элемента. а как можно сделать один список из 3 элементов на 10 кнопок? Пробовал добавлением всех кнопок в case и меняется все кнопки сразу(((

Юрий2711
Сообщения: 4
Зарегистрирован: 11 май 2014, 19:14

Re: Урок 15. Контекстное меню

Сообщение Юрий2711 » 11 май 2014, 21:00

alex6999 писал(а):спасибо, заработало.
каким образом можно сделать то что вы описывали в своем вопросе!? У меня куча кнопок и одно общее меню! Как сделать что бы каждая кнопка обрабатывалась отдельно???

_-Roman-_
Сообщения: 7
Зарегистрирован: 12 май 2014, 18:58

Re: Урок 15. Контекстное меню

Сообщение _-Roman-_ » 01 июн 2014, 14:15

Доброго времени суток форумчане! Я дошёл до 15-го урока и у меня возник вопрос, но для начала цитата что бы понятнее было: "Мы использовали метод registerForContextMenu (View view) для включения контекстного меню для определенного View. Этот метод принадлежит классу Activity. Я посмотрел исходники этого метода, там написано следующее:

public void registerForContextMenu(View view) {
view.setOnCreateContextMenuListener(this);
}". И собственно вопрос: Где посмотреть исходники метода registerForContextMenu? И по-подробнее если можно)

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: Урок 15. Контекстное меню

Сообщение Donart » 01 июн 2014, 14:35

Где посмотреть исходники метода registerForContextMenu? И по-подробнее если можно)
Вот тут

_-Roman-_
Сообщения: 7
Зарегистрирован: 12 май 2014, 18:58

Re: Урок 15. Контекстное меню

Сообщение _-Roman-_ » 01 июн 2014, 16:19

Donart писал(а):
Где посмотреть исходники метода registerForContextMenu? И по-подробнее если можно)
Вот тут
Дзякуй Пане)!

Аватара пользователя
IgNa
Сообщения: 345
Зарегистрирован: 30 сен 2013, 12:18

Re: Урок 15. Контекстное меню

Сообщение IgNa » 01 июн 2014, 16:37

а как вставить разделитель в программно созданное контекстное меню
или сменить цвет шрифта пунктов или заглавия или вот фона или хоть что-нибуть из этого

_-Roman-_
Сообщения: 7
Зарегистрирован: 12 май 2014, 18:58

Re: Урок 15. Контекстное меню

Сообщение _-Roman-_ » 01 июн 2014, 18:58

Как сделать этот же урок, но уже с использованием XML-меню? Что то не получается(( Слава богу без использования .xml получился))
Что конкретно нужно сделать в .xml и в методе onCreateContextMenu? Пока какая-то хрень получается, нажимаешь на размер или колор вылазят все 6 меню, а при нажатии на них ничего не происходит((
Что не так тут?
Примечание: здесь не весь код, а только часть которая мне не понятна!
[syntax=javascript]@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub

getMenuInflater().inflate(R.menu.mymenu2, menu);

}
[/syntax]
И что не так здесь?
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@id/tvColor">
<item
android:id="@+id/menu_red"
android:title="red"
android:orderInCategory="MENU_COLOR_RED">
</item>
<item
android:id="@+id/menu_green"
android:title="green"
android:orderInCategory="MENU_COLOR_GREEN">
</item>
<item
android:id="@+id/menu_blue"
android:title="blue"
android:orderInCategory="MENU_COLOR_BLUE">
</item>

</group>
<group
android:id="@id/tvSize">

<item
android:id="@+id/menu_30"
android:title="30"
android:orderInCategory="MENU_SIZE_30">
</item>
<item
android:id="@+id/menu_26"
android:title="26"
android:orderInCategory="MENU_SIZE_26">
</item>
<item
android:id="@+id/menu_22"
android:title="22"
android:orderInCategory="MENU_SIZE_22">
</item>

</group>
</menu>[/syntax]

_-Roman-_
Сообщения: 7
Зарегистрирован: 12 май 2014, 18:58

Re: Урок 15. Контекстное меню

Сообщение _-Roman-_ » 02 июн 2014, 17:35

[quote="_-Roman-_"]
Так что там насчёт моего вопроса?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 02 июн 2014, 21:55

контекстное меню устарело и не рекомендуется к использованию. Не возись с ним.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Viewer
Сообщения: 180
Зарегистрирован: 30 апр 2014, 11:42

Re: Урок 15. Контекстное меню

Сообщение Viewer » 03 июн 2014, 12:22

Ставь listener-ы на длинные тапы, вызывай диалоговые окна и делай в них что хочешь.

_-Roman-_
Сообщения: 7
Зарегистрирован: 12 май 2014, 18:58

Re: Урок 15. Контекстное меню

Сообщение _-Roman-_ » 03 июн 2014, 18:40

Ясно, я уже пошел дальше, толку на одном месте топтаться главное что програмно получилось)

betirsolt
Сообщения: 38
Зарегистрирован: 03 июл 2014, 23:45

Re: Урок 15. Контекстное меню

Сообщение betirsolt » 16 июл 2014, 01:42

всем привет, по совету автора я пытаюсь создать это же контекстное меню с помощью хмл файла, но не совсем получается, ребята подскажите как доработать.
вот код из MainActivity

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

package com.example.p0151_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.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

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
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		tvColor = (TextView) findViewById(R.id.tvColor);
		tvSize = (TextView) findViewById(R.id.tvSize);
		
		//Для tvColor и tvSize необходимо создавать контекстное меню
		registerForContextMenu(tvColor);
		registerForContextMenu(tvSize);
	}
	
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
		 getMenuInflater().inflate(R.menu.mymenu, menu);

                 menu.setGroupVisible(R.id.ColorGroup, true);
		menu.setGroupVisible(R.id.SizeGroup, false);
		
	}
	@Override
	public boolean onContextItemSelected(MenuItem item){
		switch(item.getItemId()){
		//Пункты меню для tvColor
		case MENU_COLOR_RED:
			tvColor.setTextColor(Color.RED);
			tvColor.setText("Text color = Red");
			break;
		case MENU_COLOR_GREEN:
			tvColor.setTextColor(Color.GREEN);
			tvColor.setText("Text color = Green");
			break;
		case MENU_COLOR_BLUE:
			tvColor.setTextColor(Color.BLUE);
			tvColor.setText("Text color = Blue");
			break;
			//пункты меню для tvSize
		case MENU_SIZE_22:
			tvSize.setTextSize(22);
			tvSize.setText("Text size = 22");
			break;
		case MENU_SIZE_26:
			tvSize.setTextSize(26);
			tvSize.setText("Text size = 26");
			break;
		case MENU_SIZE_30:
			tvSize.setTextSize(30);
			tvSize.setText("Text size = 30");
			break;
		}
		return super.onContextItemSelected(item);
	}	
}
а вот код из хмл файла mymenu.xml

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

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <group android:id="@+id/ColorGroup">
        <item 
        android:id="@+id/MENU_COLOR_GREEN"
        android:title="Green"/>
   
    <item 
        android:id="@+id/MENU_COLOR_RED"
        android:title="Red"/>
   
        <item 
        android:id="@+id/MENU_COLOR_BLUE"
        android:title="Blue"/>
    
      </group>  

<group android:id="@+id/SizeGroup">
      
        <item 
        android:id="@+id/MENU_SIZE_22"
        android:title="22"/>
   
    
        <item 
        android:id="@+id/MENU_SIZE_26"
        android:title="26"/>
  
    
        <item 
        android:id="@+id/MENU_SIZE_30"
        android:title="30"/>
        </group>
    
</menu>
я просто не умею проверять на условие на каком именно View элементе нажали и в зависимости от этого показать соответствующую группу меню, заранее спасибо всем кто помог

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 16 июл 2014, 14:17

контекстное меню устарело, брось его
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 15. Контекстное меню

Сообщение KamiSempai » 16 июл 2014, 15:36

Foenix писал(а):контекстное меню устарело, брось его
Тут стоило предложить альтернативу.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 16 июл 2014, 15:44

я хотела, но вдруг он сам разберется? ЭТо ведь просто. Заходишь на сайт девелоперов из гугла по поиску "контекстное меню" и там в первых же строках все написано..
И таким же образом ищутся иные альтернативы других устаревших вещей в уроках.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 15. Контекстное меню

Сообщение KamiSempai » 16 июл 2014, 15:55

Foenix писал(а):я хотела, но вдруг он сам разберется? ЭТо ведь просто. Заходишь на сайт девелоперов из гугла по поиску "контекстное меню" и там в первых же строках все написано..
И таким же образом ищутся иные альтернативы других устаревших вещей в уроках.
Хм...
http://developer.android.com/reference/ ... tMenu.html
Не вижу пометки Deprecated.

http://developer.android.com/guide/topi ... ntext-menu
Инструкция о том как делать контекстное меню, но ни слова о том, что оно устарело.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 16 июл 2014, 16:49

я чуть ошиблась в своих воспоминаниях где я это читала. Тут немного по-другому. Скажем так.
When developing for Android 3.0 and higher, you should instead use the contextual action mode to enable actions on selected content. This mode displays action items that affect the selected content in a bar at the top of the screen and allows the user to select multiple items.
http://developer.android.com/guide/topics/ui/menus.html

ну а для deprecated мой алгоритм все равно подходит.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 15. Контекстное меню

Сообщение Foenix » 16 июл 2014, 16:54

Далее они пишут еще раз, для тех, кто перескочил по ссылке в середину документа.
If you're developing for Android 3.0 (API level 11) or higher, you should usually use the contextual action mode to present contextual actions, instead of the floating context menu.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

betirsolt
Сообщения: 38
Зарегистрирован: 03 июл 2014, 23:45

Re: Урок 15. Контекстное меню

Сообщение betirsolt » 16 июл 2014, 21:00

Всем спасибо за ответы, мне как для новичку хотелось бы разобраться со своим примером, подскажите пожалуйста как закрепить группу меню за определенным View элементом, и если есть альтернатива то какая, я так и не понял

Ответить