android - No view found for id ... for fragment in a Dialog -


i want show 2 tabs in custom dialog in activity, getting following error.

error:

no view found id 0x7f0f0134 (com.hiro.chatio:id/viewpage_theme) fragment     postcolorpickerfragment{35ffefce #0 id=0x7f0f0134 android:switcher:2131689780:0} java.lang.illegalargumentexception: no view found id 0x7f0f0134 (com.hiro.chatio:id/viewpage_theme)     fragment postcolorpickerfragment{35ffefce #0 id=0x7f0f0134 android:switcher:2131689780:0} 

mainactivity:

private button pick_color;  @override protected void oncreate(final bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_create_blog);       pick_color = (button) findviewbyid(r.id.create_blog_color_btn);      pick_color.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {              final dialog dialog = new dialog(createblogactivity.this);             dialog.setcontentview(r.layout.blog_theme_picker);             dialog.setcanceledontouchoutside(false);              dialog.getwindow().getattributes().windowanimations = r.style.slideupdialoganimation;              button pickcolor = (button) dialog.findviewbyid(r.id.pick_color_btn);             button default_color = (button) dialog.findviewbyid(r.id.default_color);              tablayout mtablayout = (tablayout) dialog.findviewbyid(r.id.main_tabs_theme);              customviewpager mviewpager = (customviewpager) dialog.findviewbyid(r.id.viewpage_theme);              themepageradapter mthemepageradapter = new themepageradapter(getsupportfragmentmanager());              mviewpager.setadapter(mthemepageradapter);             mviewpager.setcurrentitem(0);              mviewpager.setpagingenabled(false);              mtablayout.setupwithviewpager(mviewpager); }); } 

themepageradapter:

public class themepageradapter extends fragmentpageradapter {  public themepageradapter(fragmentmanager fm) {     super(fm); }  @override public fragment getitem(int position) {      switch (position) {         case 0:             postcolorpickerfragment postcolorpickerfragment = new postcolorpickerfragment();             return postcolorpickerfragment;          case 1:             postthemepickerfragment postthemepickerfragment = new postthemepickerfragment();             return postthemepickerfragment;          default:             return null;     }  }  @override public int getcount() {     return 2; }  public charsequence getpagetitle(int position) {     switch (position) {          case 0:             return "color";         case 1:             return "theme";         default:             return null;     } } 

postthemepickerfragment:

public class postthemepickerfragment extends fragment {  public postthemepickerfragment() {  }  @override public view oncreateview(layoutinflater inflater, viewgroup container,                          bundle savedinstancestate) {      view view = inflater.inflate(r.layout.post_theme_picker, container, false);      return view; } 

you're getting exception because activity's fragmentmanager cannot find views in dialog, layout not attached activity's hierarchy. in order use fragments in dialog, you'll have use dialogfragment, passing child fragmentmanager pageradapter handle transactions.

as regular fragment, can inflate layout in oncreateview(), , set in onviewcreated(). we'll override oncreatedialog() method modify window settings there.

public class themedialogfragment extends dialogfragment {     public themedialogfragment() {}      @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         return inflater.inflate(r.layout.blog_theme_picker, container, false);     }      @override     public void onviewcreated(view view, bundle savedinstancestate) {         button pickcolor = (button) view.findviewbyid(r.id.pick_color_btn);         button default_color = (button) view.findviewbyid(r.id.default_color);         tablayout mtablayout = (tablayout) view.findviewbyid(r.id.main_tabs_theme);         customviewpager mviewpager = (customviewpager) view.findviewbyid(r.id.viewpage_theme);          themepageradapter mthemepageradapter = new themepageradapter(getchildfragmentmanager());          mviewpager.setadapter(mthemepageradapter);         mviewpager.setcurrentitem(0);         mviewpager.setpagingenabled(false);          mtablayout.setupwithviewpager(mviewpager);     }      @override     public dialog oncreatedialog(bundle savedinstancestate) {         dialog d = super.oncreatedialog(savedinstancestate);         d.getwindow().getattributes().windowanimations = r.style.slideupdialoganimation;         d.requestwindowfeature(window.feature_no_title);         d.setcanceledontouchoutside(false);         return d;     } } 

you can see had in onclick() method handled in dialogfragment, , method becomes simply:

pick_color.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             new themedialogfragment().show(getsupportfragmentmanager(), "theme");         }     } ); 

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? -