android - refresh fragment after changing data in database -


there mainactivity it's fragment named fragmentone. have list of items in fragment , these data save in database

i make changes navigationview in mainactivity .. try delete rows database. works, after need refresh fragmentone, how can refresh fragmentone ui ?

i have method named updateui in fragmentone how access method? when make method public goes wrong!

i tested different ways failed.. can tell me how can this?

mainactivity :

public class mainactivity extends appcompatactivity {  private drawerlayout mdrawerlayout; private tablayout tablayout; private viewpager viewpager; private detail mdetail;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      //////// toolbar     toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);     setsupportactionbar(toolbar);     actionbar actionbar = getsupportactionbar();     actionbar.sethomeasupindicator(r.drawable.ic_menu);     actionbar.setdisplayhomeasupenabled(true);      ///////// drawer     mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);      navigationview navigationview =             (navigationview) findviewbyid(r.id.navigation_view);     navigationview.setnavigationitemselectedlistener             (new navigationview.onnavigationitemselectedlistener() {                 @override                 public boolean onnavigationitemselected(menuitem menuitem) {                     switch (menuitem.getitemid()) {                         case r.id.nav_item_one:                             return false;                          case r.id.nav_item_two:                               alertdialog.builder alert_delete = new alertdialog.builder(                                     mainactivity.this);                             alert_delete.settitle("alert!");                             alert_delete.setmessage(r.string.alert_delete_all);                             alert_delete.setpositivebutton("yes", new dialoginterface.onclicklistener() {                                 @override                                 public void onclick(dialoginterface dialog, int which) {                                      detaillab.get(getapplicationcontext()).deletealldetail();                                      fragmentone fragmentone = new fragmentone();                                     fragmentone.getfragmentmanager().begintransaction().replace(r.id.card_view, fragmentone)                                             .commit();                                              dialog.dismiss();                                 }                             });                             alert_delete.setnegativebutton("no", new dialoginterface.onclicklistener() {                                 @override                                 public void onclick(dialoginterface dialog, int which) {                                     dialog.dismiss();                                 }                             });                             alert_delete.show();                              return false; .. ..                         case r.id.nav_item_nine:                             finish();                              default:                                 return false;                     }                 }             });      viewpager = (viewpager) findviewbyid(r.id.viewpager);     setupviewpager(viewpager);      tablayout = (tablayout) findviewbyid(r.id.tablayout);     tablayout.setupwithviewpager(viewpager);     setuptabicons(); }   private void setupviewpager(viewpager viewpager) {     viewpageradapter adapter = new viewpageradapter(getsupportfragmentmanager());     adapter.addfragment(new fragmentone(), "one");     adapter.addfragment(new fragmenttwo(), "two");     viewpager.setadapter(adapter); }  class viewpageradapter extends fragmentpageradapter {     private final list<fragment> mfragmentlist = new arraylist<>();     private final list<string> mfragmenttitlelist = new arraylist<>();      public viewpageradapter(fragmentmanager manager) {         super(manager);     }      @override     public fragment getitem(int position) {         return mfragmentlist.get(position);     }      @override     public int getcount() {         return mfragmentlist.size();     }      public void addfragment(fragment fragment, string title) {         mfragmentlist.add(fragment);         mfragmenttitlelist.add(title);     }      @override     public charsequence getpagetitle(int position) {         return null;     } }   @override public boolean onoptionsitemselected(menuitem item) {     int id = item.getitemid();      switch (id) {         case android.r.id.home:             mdrawerlayout.opendrawer(gravitycompat.start);             return true;     }     return super.onoptionsitemselected(item); }  } 

here method delete rows database in class called detaillab :

public void deletealldetail() {         mdatabase.delete(detailtable.name, null, null); } 

and fragmentone:

public class fragmentone extends fragment {     private static final string saved_number_visible = "number";      private recyclerview mdetailrecyclerview;     private detailadapter madapter;     private boolean mnumbervisible;     private view view;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         sethasoptionsmenu(true);     }      @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         view = inflater.inflate(r.layout.fragment_one_layout,                 container, false);          mdetailrecyclerview = (recyclerview)                 view.findviewbyid(r.id.detail_recycler_view);          linearlayoutmanager layoutmanager = new linearlayoutmanager(getcontext());         layoutmanager.setreverselayout(true); //this reverse data order not scroll recyclerview last item         layoutmanager.setstackfromend(true); //for keeping data order same , scrolling recyclerview last item         mdetailrecyclerview.setlayoutmanager(layoutmanager);          if (savedinstancestate != null) {             mnumbervisible =                     savedinstancestate.getboolean(saved_number_visible);         }          updateui();         return view;     }      @override     public void onresume() {         super.onresume();         updateui();     }      @override     public void onsaveinstancestate(bundle outstate) {         super.onsaveinstancestate(outstate);         outstate.putboolean(saved_number_visible, mnumbervisible);     }      @override     public void oncreateoptionsmenu(menu menu, menuinflater inflater) {         super.oncreateoptionsmenu(menu, inflater);         inflater.inflate(r.menu.fragment_one_layout, menu);         menuitem numberitem = menu.finditem(r.id.show_numbers);         if (mnumbervisible) {             numberitem.settitle(r.string.hide_numbers);         } else {             numberitem.settitle(r.string.show_numbers);         }     }      @override     public boolean onoptionsitemselected(menuitem item) {         switch (item.getitemid()) {              case r.id.show_numbers:                 mnumbervisible = !mnumbervisible;                 getactivity().invalidateoptionsmenu();                 updatenumbers();                 return true;              default:                 return super.onoptionsitemselected(item);         }     }      private void updatenumbers() {         detaillab detaillab = detaillab.get(getactivity());         int detailcount = detaillab.getdetails().size();         string number = getresources().getquantitystring                 (r.plurals.number_plural, detailcount, detailcount);           if (!mnumbervisible) {             number = null;         }          appcompatactivity activity = (appcompatactivity) getactivity();         activity.getsupportactionbar().setsubtitle(number);     }      private void updateui() {         detaillab detaillab = detaillab.get(getactivity());         list<detail> details = detaillab.getdetails();         if (details.size() == 0) {             textview t = (textview) view.findviewbyid(r.id.empty);             t.settext(r.string.empty_view);             t.setvisibility(view.visible);         } else {             textview t = (textview) view.findviewbyid(r.id.empty);             t.setvisibility(view.gone);         }  //            toast.maketext(getcontext(), "zero", toast.length_short).show();         if (madapter == null) {             madapter = new detailadapter(details);             mdetailrecyclerview.setadapter(madapter);          } else {             madapter.setdetails(details);             madapter.notifydatasetchanged();         }          updatenumbers();      }      private class detailholder extends recyclerview.viewholder             implements view.onclicklistener, view.onlongclicklistener {         private textview mtitletextview;         //        private textview mdatetextview;         private detail mdetail;         private ratingbar mratingbar;          public detailholder(layoutinflater inflater, viewgroup parent) {             super(inflater.inflate(r.layout.list_item_detail,                     parent, false));              itemview.setonclicklistener(this);             itemview.setonlongclicklistener(this);             mtitletextview = (textview) itemview.findviewbyid(r.id.detail_title); //            mdatetextview = (textview) itemview.findviewbyid(r.id.detail_date);             mratingbar = (ratingbar) itemview.findviewbyid(r.id.ratingbar);          }          public void bind(detail detail) {             mdetail = detail;             mtitletextview.settext(mdetail.gettitle());             mratingbar.setrating(mdetail.getrate());         }          @override         public void onclick(view view) {             intent intent = detailpageractivity.newintent(getactivity(),                     mdetail.getid());             startactivity(intent);         }          @override         public boolean onlongclick(view v) {              alertdialog.builder alert = new alertdialog.builder(                     getactivity());             alert.setmessage(r.string.alert);             alert.setpositivebutton("yes", new dialoginterface.onclicklistener() {                 @override                 public void onclick(dialoginterface dialog, int which) {                     detaillab.get(getactivity()).deletedetail(mdetail);                     updateui();                     updatenumbers();                     dialog.dismiss();                 }             });             alert.setnegativebutton("no", new dialoginterface.onclicklistener() {                 @override                 public void onclick(dialoginterface dialog, int which) {                     dialog.dismiss();                 }             });             alert.show();             return true;         }     }      private class detailadapter extends recyclerview.adapter<detailholder> {         private list<detail> mdetails;          public detailadapter(list<detail> details) {             mdetails = details;         }          @override         public detailholder oncreateviewholder(viewgroup parent, int viewtype) {             layoutinflater layoutinflater =                     layoutinflater.from(getactivity());              return new detailholder(layoutinflater, parent);         }          @override         public void onbindviewholder(detailholder holder, int position) {             detail detail = mdetails.get(position);             holder.bind(detail);         }          @override         public int getitemcount() {             return mdetails.size();         }          public void setdetails(list<detail> details) {             mdetails = details;         }     } } 

and here layout fragmentone :

<relativelayout     xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:app="http://schemas.android.com/apk/res-auto"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:id="@+id/fragment_one_layout">      <android.support.v7.widget.cardview     android:id="@+id/card_view"     android:layout_width="match_parent"     android:layout_height="wrap_content">      <android.support.v7.widget.recyclerview         android:id="@+id/detail_recycler_view"         android:layout_width="match_parent"         android:layout_height="wrap_content"/>      <textview         android:id="@+id/empty"         android:layout_width="match_parent"         android:layout_height="match_parent"         android:padding="50dp"         android:textalignment="center"         android:textsize="20sp"/> </android.support.v7.widget.cardview>  <android.support.design.widget.floatingactionbutton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_alignparentright="true" android:layout_marginright="24dp" android:layout_marginbottom="24dp" android:src="@drawable/ic_menu_add" android:scaletype="center" app:elevation="8dp" app:borderwidth="0dp"     /> 

my logcat:

  fatal exception: main process: com.drgnme.listhamrah, pid: 23454 java.lang.nullpointerexception: attempt invoke virtual method 'android.support.v4.app.fragmenttransaction android.support.v4.app.fragmentmanager.begintransaction()' on null object reference @ com.drgnme.listhamrah.mainactivity$1$1.onclick(mainactivity.java:76) @ android.support.v7.app.alertcontroller$buttonhandler.handlemessage(alertcontroller.java:161) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5451) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 

i think having issue because of below code in mainactivity:

fragmentone fragmentone = new fragmentone(); fragmentone.getfragmentmanager().begintransaction().replace(r.id.card_view, fragmentone).commit(); 

you try instance of fragment manager getfragmentmanager() call activity.getfragmentmanager fragmentone isn't attach activity method return null , java.lang.nullpointerexception

instead of fragmentone.getfragmentmanager() use getsupportfragmentmanager() directly activity.

hope helps.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -