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