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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -