android - alert dialog box not responding? -


i trying developing app in alertdialog must open on button click in recylcerview , these error getting :

21 06:50:20.817 1037-1037/com.example.hephaestus.shadowpets4  e/androidruntime: fatal exception: main                                                                          java.lang.illegalstateexception: need use theme.appcompat  theme (or descendant) activity.                                                                                    @ android.support.v7.app.appcompatdelegateimplv9.createsubdecor(appcompatdelegateimplv9.java:359)       @ android.support.v7.app.appcompatdelegateimplv9.ensuresubdecor(appcompatdelegateimplv9.java:328)       @ android.support.v7.app.appcompatdelegateimplv9.setcontentview(appcompatdelegateimplv9.java:289)       @ android.support.v7.app.appcompatdialog.setcontentview(appcompatdialog.java:83)       @ android.support.v7.app.alertcontroller.installcontent(alertcontroller.java:225)       @ android.support.v7.app.alertdialog.oncreate(alertdialog.java:257)       @ android.app.dialog.dispatchoncreate(dialog.java:351)       @ android.app.dialog.show(dialog.java:256)       @ com.example.hephaestus.shadowpets4.adapters.traineradapter$1.onclick(traineradapter.java:84)       @ android.view.view.performclick(view.java:4084)       @ android.view.view$performclick.run(view.java:16966)       @ android.os.handler.handlecallback(handler.java:615)       @ android.os.handler.dispatchmessage(handler.java:92)       @ android.os.looper.loop(looper.java:137)       @ android.app.activitythread.main(activitythread.java:4745)       @ java.lang.reflect.method.invokenative(native method)       @ java.lang.reflect.method.invoke(method.java:511)       @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:786)       @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553)       @ dalvik.system.nativestart.main(native method) 

after researching lot found answer problem order use alert dialog in activity should use activity instead of context while creating alert dialog , should use application context while using fragment , these changes must made in adapter(as i'm using recylcerview ) in activity in it's executed , these understand example : the following example of implementing alert dialog box recyclerview in fragment

  public class adoptpetadapter extends recyclerview.adapter<adoptpetadapter.viewholder> {      private context context;      private list<pet> petlist;     public adoptpetadapter(context context,list<pet> petlist)     {         this.context=context;         this.petlist=petlist;     }     @override     public adoptpetadapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) {         view view = layoutinflater.from(parent.getcontext()).inflate(r.layout.layout_pet,parent,false);         return new viewholder(view);     }      @override     public void onbindviewholder(viewholder holder, final int position) {             holder.petname.settext(petlist.get(position).getpetname());             holder.petcost.settext(petlist.get(position).getpetcost());         picasso.with(context).load(petlist.get(position).getpetimage()).into(holder.imageview);         holder.btn_contact.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                   layoutinflater li =layoutinflater.from(context);                view promptsview = li.inflate(r.layout.petenquiryform,null);                 alertdialog.builder builder = new alertdialog.builder(context);                 builder.setview(promptsview);                   textview msg_title =(textview)promptsview.findviewbyid(r.id.txt_petenquirytitle);                     msg_title.settext("enquiry "+" "+petlist.get(position).getpetname());                 edittext txt_message =(edittext) promptsview.findviewbyid(r.id.txt_message);                  builder.setcancelable(false)                          .setpositivebutton("send", new dialoginterface.onclicklistener() {                              @override                              public void onclick(dialoginterface dialog, int which) {                               }                          })                          .setnegativebutton("cancel", new dialoginterface.onclicklistener() {                              @override                              public void onclick(dialoginterface dialog, int which) {                               }                          });                    alertdialog alertdialog = builder.create();                     alertdialog.show();             }         });     }      @override     public int getitemcount() {         return petlist.size();     }     public class viewholder extends recyclerview.viewholder     {         private imageview imageview;         private textview petcost,petname;         private button btn_contact;          public viewholder(view itemview) {              super(itemview);             imageview=(imageview)itemview.findviewbyid(r.id.img_pet);             petcost=(textview)itemview.findviewbyid(r.id.txt_petprice);             petname=(textview)itemview.findviewbyid(r.id.txt_petname);             btn_contact=(button)itemview.findviewbyid(r.id.btn_contactseller);         }     } } 

in order implement in fragment have following code

    public class pets extends fragment {     list<pet> petlist;     recyclerview recyclerview;     progressdialog pdialog;     adoptpetadapter adapter;         public pets() {         // required empty public constructor     }       @override     public view oncreateview(layoutinflater inflater, viewgroup container,                              bundle savedinstancestate) {         // inflate layout fragment         view view= inflater.inflate(r.layout.fragment_pets, container, false);         return view;     }      @override     public void onviewcreated(view view, @nullable bundle savedinstancestate) {         super.onviewcreated(view, savedinstancestate);         recyclerview=(recyclerview)view.findviewbyid(r.id.list_pets);          initviews();     }     private void initviews()     {         pdialog = new progressdialog(getcontext());         pdialog.setmessage("loading,please wait...");         pdialog.setcancelable(false);         pdialog.show();         try         {             glide.with(this).load(r.drawable.ic_menu_gallery).into((imageview) recyclerview.findviewbyid(r.id.img_pet));          }         catch (exception ex)         {          }         petlist=new arraylist<>();         adapter=new adoptpetadapter(getcontext(),petlist);         recyclerview.layoutmanager layoutmanager = new gridlayoutmanager(getactivity(),2);         recyclerview.setlayoutmanager(layoutmanager);         recyclerview.sethasfixedsize(true);         recyclerview.setadapter(adapter);         loadjson();     }     private void loadjson()     {           try           {               retrofit retrofit = new retrofit.builder().baseurl(apiurl.base_url).addconverterfactory(gsonconverterfactory.create()).build();               apiservice service=retrofit.create(apiservice.class);               call<response> call =service.getpetlist();                call.enqueue(new callback<response>() {                    @override                    public void onresponse(call<response> call, retrofit2.response<response> response) {                        list<pet>data=response.body().getpetlist();                        recyclerview.setadapter(new adoptpetadapter(getactivity(),data));                        recyclerview.smoothscrolltoposition(0);                        pdialog.hide();                    }                     @override                    public void onfailure(call<response> call, throwable t) {                        pdialog.dismiss();                      }                });           }           catch (exception ex)           {                pdialog.hide();            }     } } 

**while implementing in activity should changed following , following code adapter , implementing alert dialog box in **

public class traineradapter extends recyclerview.adapter<traineradapter.viewholder> {     private activity activity;     private list<trainer> trainerlist;     public traineradapter(activity activity,list<trainer> trainerlist)     {         this.activity=activity;         this.trainerlist=trainerlist;     }     @override     public traineradapter.viewholder oncreateviewholder(viewgroup parent, int viewtype) {        view view= layoutinflater.from(parent.getcontext()).inflate(r.layout.layout_trainer,parent,false);         return new viewholder(view);     }      @override     public void onbindviewholder(viewholder holder, int position) {         holder.trainername.settext(trainerlist.get(position).gettrainername());         holder.trainerlocation.settext(trainerlist.get(position).gettrainerphone());         holder.btnenquiretrnr.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 layoutinflater li = layoutinflater.from(activity);                view promptsview = li.inflate(r.layout.trainerenquiryform,null);                 alertdialog.builder builder = new alertdialog.builder(activity);                  builder.setview(promptsview);                  builder.setcancelable(false)                          .setpositivebutton("send", new dialoginterface.onclicklistener() {                              @override                              public void onclick(dialoginterface dialog, int which) {                               }                          })                          .setnegativebutton("cancel", new dialoginterface.onclicklistener() {                              @override                              public void onclick(dialoginterface dialog, int which) {                               }                          });                 alertdialog alertdialog = builder.create();                 alertdialog.show();             }         });      }      @override     public int getitemcount() {         return trainerlist.size();     }      public class viewholder extends recyclerview.viewholder {         private textview trainername,trainerlocation;         private button btnenquiretrnr;         public viewholder(view itemview) {             super(itemview);             trainername=(textview)itemview.findviewbyid(r.id.txt_trainername);             trainerlocation=(textview)itemview.findviewbyid(r.id.txt_trainerlocation);             btnenquiretrnr=(button)itemview.findviewbyid(r.id.btn_enquiretrnr);         }     } } 

in order implement activity how should implement it

   public class trainers extends appcompatactivity {         recyclerview trainerslist;         list<trainer> list;          progressdialog pdialog;           @override         protected void oncreate(bundle savedinstancestate) {             super.oncreate(savedinstancestate);             setcontentview(r.layout.activity_trainers);             pdialog = new progressdialog(this);             pdialog.setcancelable(false);             pdialog.setmessage("loading,please wait....");             pdialog.show();             trainerslist =(recyclerview)findviewbyid(r.id.list_trainers);             trainerslist.sethasfixedsize(true);              recyclerview.layoutmanager layoutmanager= new linearlayoutmanager(getapplicationcontext(),linearlayoutmanager.vertical,false);             trainerslist.setlayoutmanager(layoutmanager);             loaddata();          }          private void loaddata()         {             try {                 retrofit retrofit = new retrofit.builder().baseurl(apiurl.base_url).addconverterfactory(gsonconverterfactory.create()).build();                 apiservice service = retrofit.create(apiservice.class);                 call<response> call = service.gettrainers();                 call.enqueue(new callback<response>() {                     @override                     public void onresponse(call<response> call, retrofit2.response<response> response) {                         list=response.body().gettrainerlist();                         traineradapter traineradapter=new traineradapter(trainers.this,list);                         trainerslist.setadapter(traineradapter);                         pdialog.hide();                     }                      @override                     public void onfailure(call<response> call, throwable t) {                      }                 });             }              catch (exception ex)              {                  }             }         } 

i hope these answers many people queries had


Comments

Popular posts from this blog

python - Operations inside variables -

Generic Map Parameter java -

arrays - What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it? -