Android: Show a contextual menu bar when click on a textview -


i have tried http://wptrafficanalyzer.in/blog/creating-a-contextual-menu-bar-contextual-action-mode-for-a-single-view-in-android/

with androidmanifest.xml:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="tvt.webviewdemo" android:versioncode="1" android:versionname="1.0" >  <uses-sdk     android:minsdkversion="8"     android:targetsdkversion="19" />  <application     android:allowbackup="true"     android:icon="@drawable/ic_launcher"     android:label="@string/app_name"     android:theme="@style/apptheme" >     <activity         android:name="tvt.webviewdemo.mainactivity"         android:label="@string/app_name" >         <intent-filter>             <action android:name="android.intent.action.main" />              <category android:name="android.intent.category.launcher" />         </intent-filter>     </activity> </application>  <uses-permission android:name="android.permission.internet"/> </manifest> 

but has error: java.lang.noclassdeffounderror:

public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.main);      textview tvhello = (textview) findviewbyid(r.id.tv_hello);      mcallback = new actionmode.callback() { // error line <<<<<          /**          * invoked whenever action mode shown. invoked          * after oncreateactionmode          */         @override         public boolean onprepareactionmode(actionmode mode, menu menu) {             return false;         }          /** called when user exits action mode */         @override         public void ondestroyactionmode(actionmode mode) {             mmode = null;         }          /**          * called when action mode created. called          * startactionmode()          */         @override         public boolean oncreateactionmode(actionmode mode, menu menu) {             mode.settitle("demo");             getmenuinflater().inflate(r.menu.context_menu, menu);             return true;         }          /** called when item in context menu selected */         @override         public boolean onactionitemclicked(actionmode mode, menuitem item) {             switch (item.getitemid()) {             case r.id.action1:                 toast.maketext(getbasecontext(), "selected action1 ",                         toast.length_long).show();                 mode.finish(); // automatically exists action mode, when                                 // user selects action                 break;             case r.id.action2:                 toast.maketext(getbasecontext(), "selected action2 ",                         toast.length_long).show();                 break;             case r.id.action3:                 toast.maketext(getbasecontext(), "selected action3 ",                         toast.length_long).show();                 break;             }             return false;         }     };      onlongclicklistener listener = new onlongclicklistener() {          @override         public boolean onlongclick(view v) {             if (mmode != null)                 return false;             else                 mmode = startactionmode(mcallback);             return true;         }     };      tvhello.setonlongclicklistener(listener);  } 

edit - error log:

04-11 20:45:24.600: e/androidruntime(348): fatal exception: main 04-11 20:45:24.600: e/androidruntime(348): java.lang.noclassdeffounderror:  tvt.webviewdemo.mainactivity$1 04-11 20:45:24.600: e/androidruntime(348):  @ tvt.webviewdemo.mainactivity.oncreate(mainactivity.java:28) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1047) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.activitythread.performlaunchactivity(activitythread.java:1611) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.activitythread.handlelaunchactivity(activitythread.java:1663) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.activitythread.access$1500(activitythread.java:117) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.activitythread$h.handlemessage(activitythread.java:931) 04-11 20:45:24.600: e/androidruntime(348):  @ android.os.handler.dispatchmessage(handler.java:99) 04-11 20:45:24.600: e/androidruntime(348):  @ android.os.looper.loop(looper.java:123) 04-11 20:45:24.600: e/androidruntime(348):  @ android.app.activitythread.main(activitythread.java:3683) 04-11 20:45:24.600: e/androidruntime(348):  @ java.lang.reflect.method.invokenative(native method) 04-11 20:45:24.600: e/androidruntime(348):  @ java.lang.reflect.method.invoke(method.java:507) 04-11 20:45:24.600: e/androidruntime(348):  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:839) 04-11 20:45:24.600: e/androidruntime(348):  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:597) 04-11 20:45:24.600: e/androidruntime(348):  @ dalvik.system.nativestart.main(native method) 

how solve problem?

thanks!

i think there mistake in inflating contextual layout inside oncreateactionmode():

getmenuinflater().inflate(r.menu.context_menu, menu); 

it should inflated using actionmode object:

 mode.getmenuinflater().inflate(r.menu.contextual_menu, menu); 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -