Android: после долгого нажатия на просмотр текста мне нужно всплывающее контекстное меню

Я использовал Recyclerview, расширяющий класс Fragment. Мне нужно всплывающее меню после длительного нажатия на textView. Я показал код ниже. Там нет ошибок, поэтому я не знаю, где искать.

public class RecyclerViewFragment  extends Fragment implements View.OnCreateContextMenuListener {

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView recyclerView = (RecyclerView) inflater.inflate(
                R.layout.recycler_view, container, false);
        ContentAdapter adapter = new ContentAdapter(recyclerView.getContext());
        recyclerView.setAdapter(adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        return recyclerView;
    }



    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
        public ImageView avator;
        public TextView name;
        public TextView description;
        public TextView num;
        public View divider;
        public ViewHolder(LayoutInflater inflater, ViewGroup parent) {
            super(inflater.inflate(R.layout.listing_view, parent, false));
            avator = (ImageView) itemView.findViewById(R.id.listing_avatar);
            name = (TextView) itemView.findViewById(R.id.listing_title);
            description = (TextView) itemView.findViewById(R.id.listing_desc);
            num = (TextView) itemView.findViewById(R.id.listing_num) ;
            divider= itemView.findViewById(R.id.listing_div);
            itemView.setOnCreateContextMenuListener(this);
        }

        @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            if (v.getId()==R.id.list) {
                //AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo;
                menu.setHeaderTitle("Action");
                String[] menuItems = getResources().getStringArray(R.array.arr_menu);
                for (int i = 0; i<menuItems.length; i++) {
                    menu.add(Menu.NONE, i, i, menuItems[i]);
                }
            }
        }
    }

2 ответа

Надеюсь, это поможет вам.

onCreate()

registerForContextMenu (textView1);

@Override   
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)  
    {  
            super.onCreateContextMenu(menu, v, menuInfo);  
            menu.setHeaderTitle("Select The Action");    
            menu.add(0, v.getId(), 0, "Call");//groupId, itemId, order, title   
            menu.add(0, v.getId(), 0, "SMS");   
    }   
    @Override    
    public boolean onContextItemSelected(MenuItem item){    
            if(item.getTitle()=="Call"){  
                Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show();  
            }    
            else if(item.getTitle()=="SMS"){  
                Toast.makeText(getApplicationContext(),"sending sms code",Toast.LENGTH_LONG).show();  
            }else{  
               return false;  
            }    
          return true;    
      }    

tv.setOnLongClickListener (new OnLongClickListener () {

    @Override
    public boolean onLongClick(View v) {
        // TODO Auto-generated method stub
        return false;
    }

});

Используйте OnLongClickListener вместо OnClickListner

https://developer.android.com/guide/topics/ui/menus.html

Другие вопросы по тегам