Я посмотрел урок 15 и решил реализовать свое контекстное меню. Однако все было хорошо до функции onContextMenuSelected. Она не вызывается вообще после счелчка на элементе меню.
Вот MainActivity.java:
Код: Выделить всё
package com.example.p0051;
import android.app.Activity;
import android.app.Fragment;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Переменная текста
final TextView cmTxt = (TextView) findViewById(R.id.cmTxt);
// Регистрация в контекстном меню
registerForContextMenu(cmTxt);
/*
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
*/
}
// Функция вывода сообщения на экран
public void mess(String s){
Toast.makeText(this, s, Toast.LENGTH_SHORT).show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
mess("Yes");
return super.onOptionsItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
menu.add(0, 1, 0, "Зеленый");
menu.add(0, 2, 0, "Синий");
menu.add(0, 3, 0, "Красный");
}
public boolean onContextMenuSelected(MenuItem item){
mess("Yes");
final TextView cmTxt = (TextView) findViewById(R.id.cmTxt);
switch(item.getItemId()){
case 1:
cmTxt.setTextColor(Color.GREEN);
cmTxt.setText("Цвет - зеленый");
break;
case 2:
cmTxt.setTextColor(Color.BLUE);
cmTxt.setText("Цвет - синий");
break;
case 3:
cmTxt.setTextColor(Color.RED);
cmTxt.setText("Цвет - красный");
break;
}
return super.onContextItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
return rootView;
}
}
}