Android Webview: Override Contextual Action Bar -
i trying override contextual action bar in android webview. when long click on selected word, custom action bar displayed. however, when click on action bar button, nothing happens.
it seems oncontextitemselected() function not called. code:
@override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.dictionary); mwebview = (webview) findviewbyid(r.id.wv); } @override public boolean oncontextitemselected(menuitem item) { switch (item.getitemid()) { case r.id.save_word: toast.maketext(checkdictionary.this,"save word meaning successfully",toast.length_long).show(); break; default: break; } if (mactionmode != null) { mactionmode.finish(); } return super.oncontextitemselected(item); } @override public void onactionmodestarted(actionmode mode) { if (mactionmode == null) { mactionmode = mode; mode.settitle("save word meaning"); menu menu = mode.getmenu(); menu.clear(); mode.getmenuinflater().inflate(r.menu.dictionary_menu, menu); } super.onactionmodestarted(mode); } @override public void onactionmodefinished(actionmode mode) { mactionmode = null; super.onactionmodefinished(mode); } }
i job in old projects dis :--
private string[] data = {"1", "2", "3", "4", "5", "6", "7", "8", "9","10"}; private selectionadapter madapter; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); madapter = new selectionadapter(this, r.layout.row_list_item, r.id.textview1, data); setlistadapter(madapter); getlistview().setchoicemode(listview.choice_mode_multiple_modal); getlistview().setmultichoicemodelistener(new multichoicemodelistener() { private int nr = 0; @override public boolean onprepareactionmode(actionmode mode, menu menu) { // todo auto-generated method stub return false; } @override public void ondestroyactionmode(actionmode mode) { // todo auto-generated method stub madapter.clearselection(); } @override public boolean oncreateactionmode(actionmode mode, menu menu) { // todo auto-generated method stub nr = 0; menuinflater inflater = getmenuinflater(); inflater.inflate(r.menu.contextual_menu, menu); return true; } @override public boolean onactionitemclicked(actionmode mode, menuitem item) { // todo auto-generated method stub switch (item.getitemid()) { case r.id.item_delete: nr = 0; madapter.clearselection(); mode.finish(); } return false; } @override public void onitemcheckedstatechanged(actionmode mode, int position, long id, boolean checked) { // todo auto-generated method stub if (checked) { nr++; madapter.setnewselection(position, checked); } else { nr--; madapter.removeselection(position); } mode.settitle(nr + " selected"); } }); getlistview().setonitemlongclicklistener(new onitemlongclicklistener() { @override public boolean onitemlongclick(adapterview<?> arg0, view arg1, int position, long arg3) { // todo auto-generated method stub getlistview().setitemchecked(position, !madapter.ispositionchecked(position)); return false; } }); } private class selectionadapter extends arrayadapter<string> { private hashmap<integer, boolean> mselection = new hashmap<integer, boolean>(); public selectionadapter(context context, int resource, int textviewresourceid, string[] objects) { super(context, resource, textviewresourceid, objects); } public void setnewselection(int position, boolean value) { mselection.put(position, value); notifydatasetchanged(); } public boolean ispositionchecked(int position) { boolean result = mselection.get(position); return result == null ? false : result; } public set<integer> getcurrentcheckedposition() { return mselection.keyset(); } public void removeselection(int position) { mselection.remove(position); notifydatasetchanged(); } public void clearselection() { mselection = new hashmap<integer, boolean>(); notifydatasetchanged(); } @override public view getview(int position, view convertview, viewgroup parent) { view v = super.getview(position, convertview, parent);//let adapter handle setting row views v.setbackgroundcolor(getresources().getcolor(android.r.color.background_light)); if (mselection.get(position) != null) { v.setbackgroundcolor(getresources().getcolor(android.r.color.holo_blue_light); } return v; } } }
you can make changes in code according needs...
Comments
Post a Comment