android - Error on Fragment? -
hello developing android app , new development. facing on error says:
error:(134, 19) error: recyclertouchlistener not abstract , not override abstract method onrequestdisallowintercepttouchevent(boolean) in onitemtouchlistener
here code above error appears
fragmentdrawer.java
public class fragmentdrawer extends fragment { private static string tag = fragmentdrawer.class.getsimplename(); private recyclerview recyclerview; private actionbardrawertoggle mdrawertoggle; private drawerlayout mdrawerlayout; private navigationdraweradapter adapter; private view containerview; private static string[] titles = null; private fragmentdrawerlistener drawerlistener; public fragmentdrawer() { } public void setdrawerlistener(fragmentdrawerlistener listener) { this.drawerlistener = listener; } public static list<navdraweritem> getdata() { list<navdraweritem> data = new arraylist<>(); // preparing navigation drawer items (int = 0; < titles.length; i++) { navdraweritem navitem = new navdraweritem(); navitem.settitle(titles[i]); data.add(navitem); } return data; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); // drawer labels titles = getactivity().getresources().getstringarray(r.array.nav_drawer_labels); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflating view layout view layout = inflater.inflate(r.layout.fragment_navigation_drawer, container, false); recyclerview = (recyclerview) layout.findviewbyid(r.id.drawerlist); adapter = new navigationdraweradapter(getactivity(), getdata()); recyclerview.setadapter(adapter); recyclerview.setlayoutmanager(new linearlayoutmanager(getactivity())); recyclerview.addonitemtouchlistener(new recyclertouchlistener(getactivity(), recyclerview, new clicklistener() { @override public void onclick(view view, int position) { drawerlistener.ondraweritemselected(view, position); mdrawerlayout.closedrawer(containerview); } @override public void onlongclick(view view, int position) { } })); return layout; } public void setup(int fragmentid, drawerlayout drawerlayout, final toolbar toolbar) { containerview = getactivity().findviewbyid(fragmentid); mdrawerlayout = drawerlayout; mdrawertoggle = new actionbardrawertoggle(getactivity(), drawerlayout, toolbar, r.string.drawer_open, r.string.drawer_close) { @override public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); getactivity().invalidateoptionsmenu(); } @override public void ondrawerclosed(view drawerview) { super.ondrawerclosed(drawerview); getactivity().invalidateoptionsmenu(); } @override public void ondrawerslide(view drawerview, float slideoffset) { super.ondrawerslide(drawerview, slideoffset); toolbar.setalpha(1 - slideoffset / 2); } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); mdrawerlayout.post(new runnable() { @override public void run() { mdrawertoggle.syncstate(); } }); } public static interface clicklistener { public void onclick(view view, int position); public void onlongclick(view view, int position); } static class recyclertouchlistener implements recyclerview.onitemtouchlistener { private gesturedetector gesturedetector; private clicklistener clicklistener; public recyclertouchlistener(context context, final recyclerview recyclerview, final clicklistener clicklistener) { this.clicklistener = clicklistener; gesturedetector = new gesturedetector(context, new gesturedetector.simpleongesturelistener() { @override public boolean onsingletapup(motionevent e) { return true; } @override public void onlongpress(motionevent e) { view child = recyclerview.findchildviewunder(e.getx(), e.gety()); if (child != null && clicklistener != null) { clicklistener.onlongclick(child, recyclerview.getchildposition(child)); } } }); } @override public boolean onintercepttouchevent(recyclerview rv, motionevent e) { view child = rv.findchildviewunder(e.getx(), e.gety()); if (child != null && clicklistener != null && gesturedetector.ontouchevent(e)) { clicklistener.onclick(child, rv.getchildposition(child)); } return false; } @override public void ontouchevent(recyclerview rv, motionevent e) { } } /* public void myclickmethod(view v) { switch(v.getid()) { // doing } }*/ public interface fragmentdrawerlistener { public void ondraweritemselected(view view, int position); } mainactivity.java
public class mainactivity extends actionbaractivity implements fragmentdrawer.fragmentdrawerlistener { private static string tag = mainactivity.class.getsimplename(); private charsequence mdrawertitle; private actionbar actionbar; // used store app title private charsequence mtitle; private toolbar mtoolbar; private fragmentdrawer drawerfragment; private actionbardrawertoggle mdrawertoggle; private fragment fra; // fragmenttransaction fragmenttransaction = fragmentmanager.begintransaction(); view view; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); imageview myimage = (imageview) findviewbyid(r.id.imageview); myimage.setalpha(50); mtoolbar = (toolbar) findviewbyid(r.id.tool_bar1); setsupportactionbar(mtoolbar); mtoolbar.setnavigationicon(r.drawable.logofinal); mtitle = mdrawertitle = gettitle(); /* getsupportactionbar().setdisplayshowhomeenabled(true); getsupportactionbar().sethomebuttonenabled(false);*/ drawerfragment = (fragmentdrawer) getsupportfragmentmanager().findfragmentbyid(r.id.fragment_navigation_drawer); drawerfragment.setup(r.id.fragment_navigation_drawer, (drawerlayout) findviewbyid(r.id.drawer_layout), mtoolbar); drawerfragment.setdrawerlistener(this); /** * creating buttons instances * */ // dashboard news feed button /*button btn_newsfeed = (button)findviewbyid(r.id.btn_news_feed); btn_newsfeed.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { switch(view.getid()) { case r.id.btn_news_feed: fra= new homefragment(); break; } } }); button btn_friends = (button) findviewbyid(r.id.btn_events); btn_friends.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { switch(view.getid()) { case r.id.btn_events: fra= new contactfragment(); break; } } });*/ // dashboard friends button button btn_newsfeed = (button)findviewbyid(r.id.btn_news_feed); button btn_friends = (button) findviewbyid(r.id.btn_friends); // dashboard messages button button btn_messages = (button) findviewbyid(r.id.btn_messages); // dashboard places button button btn_places = (button) findviewbyid(r.id.btn_places); // dashboard events button button btn_events = (button) findviewbyid(r.id.btn_events); // dashboard photos button button btn_photos = (button) findviewbyid(r.id.btn_photos); //button btn_maps = (button) findviewbyid(r.id.btn_maps); /** * handling button click events * */ // listening news feed button click*/ btn_friends.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, aboutactivity.class); startactivity(i); } }); // listening friends button click btn_newsfeed.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, homefragment.class); startactivity(i); } }); // listening messages button click btn_messages.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, messagesfragment.class); startactivity(i); } }); // listening places button click btn_places.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, friendsfragment.class); startactivity(i); } }); // listening events button click btn_events.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, campusfragment.class); startactivity(i); } }); // listening photos button click btn_photos.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // launching news feed screen intent = new intent(mainactivity.this, contactfragment.class); startactivity(i); } }); } /* public void myclickmethod(view v) { switch (v.getid()) { case r.id.btn_news_feed: intent = new intent(mainactivity.this, homefragment.class); startactivity(i); break; default: break; } }*/ @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_main, menu); return true; } static class adapter extends fragmentpageradapter { private final list<fragment> mfragments = new arraylist<>(); private final list<string> mfragmenttitles = new arraylist<>(); public adapter(fragmentmanager fm) { super(fm); } public void addfragment(fragment fragment, string title) { mfragments.add(fragment); mfragmenttitles.add(title); } @override public fragment getitem(int position) { return mfragments.get(position); } @override public int getcount() { return mfragments.size(); } @override public charsequence getpagetitle(int position) { return mfragmenttitles.get(position); } } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); //noinspection simplifiableifstatement if (id == r.id.action_settings) { return true; } if(id == r.id.action_search){ toast.maketext(getapplicationcontext(), "search action selected!", toast.length_short).show(); return true; } return super.onoptionsitemselected(item); } public void settitle(charsequence title) { mtitle = title; getsupportactionbar().settitle(mtitle); } @override public void ondraweritemselected(view view, int position) { displayview(position); } private void displayview(int position) { fragment fragment = null; intent intent; string title = getstring(r.string.app_name); switch (position) { case 0: intent = new intent(mainactivity.this, homefragment.class); title = getstring(r.string.title_home); startactivity(i); break; case 1: = new intent(mainactivity.this, friendsfragment.class); title = getstring(r.string.title_friends); startactivity(i); break; case 2: intent i2=new intent(getapplicationcontext(),messagesfragment.class); title = getstring(r.string.title_messages); startactivity(i2); break; /* case 3: intent i1 = new intent(mainactivity.this, friendsfragment.class); startactivity(i1); title = getstring(r.string.title_department); startactivity(i1); break;*/ case 3: = new intent(mainactivity.this, campusfragment.class); title = getstring(r.string.title_campus_life); startactivity(i); break; case 4: = new intent(mainactivity.this, contactfragment.class); title = getstring(r.string.title_contact); startactivity(i); break; default: break; } if (fragment != null) { fragmentmanager fragmentmanager = getsupportfragmentmanager(); fragmenttransaction fragmenttransaction = fragmentmanager.begintransaction(); fragmenttransaction.replace(r.id.container_body, fragment); fragmenttransaction.commit(); // set toolbar title getsupportactionbar().settitle(title); } } public void onbackpressed() { alertdialog.builder alertdlg = new alertdialog.builder(this); alertdlg.setmessage("are sure want exit?"); alertdlg.setcancelable(false); alertdlg.setpositivebutton("yes", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int id) { mainactivity.super.onbackpressed(); } } ); alertdlg.setnegativebutton("no", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int which) { // nothing } }); alertdlg.create().show(); } } would grateful if helps me.
it sounds need override onrequestdisallowtouchevent() method on recyclertouchlistener.
try adding within recyclertouchlistener class:
@override public void onrequestdisallowintercepttouchevent(boolean disallowintercept) { } so.. code should this:
public recyclertouchlistener(context context, final recyclerview recyclerview, final clicklistener clicklistener) { this.clicklistener = clicklistener; gesturedetector = new gesturedetector(context, new gesturedetector.simpleongesturelistener() { @override public boolean onsingletapup(motionevent e) { return true; } @override public void onlongpress(motionevent e) { view child = recyclerview.findchildviewunder(e.getx(), e.gety()); if (child != null && clicklistener != null) { clicklistener.onlongclick(child, recyclerview.getchildposition(child)); } } }); @override public void onrequestdisallowintercepttouchevent(boolean disallowintercept){ } } you can refer this question more info.
i hope helps!
Comments
Post a Comment