android - Fragments, how to start Dialog from fragment? -
i read dialogfragment, , make 1 in 1 this.
import android.app.alertdialog; import android.app.dialog; import android.content.dialoginterface; import android.os.bundle; import android.support.v4.app.dialogfragment; public class mydialogfragment extends dialogfragment { public static mydialogfragment newinstance(int title) { mydialogfragment frag = new mydialogfragment(); bundle args = new bundle(); args.putint("title", title); frag.setarguments(args); return frag; } @override public dialog oncreatedialog(bundle savedinstancestate) { int title = getarguments().getint("title"); return new alertdialog.builder(getactivity()) .seticon(r.drawable.plus_icon) .settitle(title) .setpositivebutton("ok", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int whichbutton) { addexercisefragment.dopositiveclick(); } } ) .setnegativebutton("no", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int whichbutton) { addexercisefragment.donegativeclick(); } } ) .create(); } }
and in sherlockfragment make next:
public void dopositiveclick() { } public void donegativeclick() { } void showdialog() { dialogfragment newfragment = mydialogfragment.newinstance( r.string.name); newfragment.show(getfragmentmanager(), "dialog"); }
but methods dopositiveclick(),donegativeclick() wants static - bad me.
public void dopositiveclick() { dialogflag = 0; intent photopickerintent = new intent(intent.action_pick); photopickerintent.settype("image/*"); startactivityforresult(photopickerintent, gallery_request); // dialog.cancel(); } @override public void onactivityresult(int requestcode, int resultcode, intent imagereturnedintent) { super.onactivityresult(requestcode, resultcode, imagereturnedintent); string path = null; if (dialogflag == 0) { switch (requestcode) { case gallery_request: if (resultcode == result_ok) { uri selectedimage = imagereturnedintent.getdata(); path = getrealpathfromuri(selectedimage); log.d("mylogs", path); if (btnid == 1) { pathone = path; bitmap bmimg = bitmapfactory.decodefile(pathone); ivone.setimagebitmap(bmimg); 1 = bmimg; } else { pathtwo = path; bitmap bmimg = bitmapfactory.decodefile(pathtwo); ivtwo.setimagebitmap(bmimg); 2 = bmimg; } } } } if (dialogflag == 1) { uri uri; if (requestcode == camera_result) { cursor cursor = getactivity().getcontentresolver().query( media.external_content_uri, new string[] { media.data, media.date_added, mediastore.images.imagecolumns.orientation }, media.date_added, null, "date_added asc"); if (cursor != null && cursor.movetofirst()) { { uri = uri.parse(cursor.getstring(cursor .getcolumnindex(media.data))); path = uri.tostring(); } while (cursor.movetonext()); cursor.close(); } log.d("mylogs", path); if (btnid == 1) { pathone = path; bitmap bmimg = bitmapfactory.decodefile(pathone); ivone.setimagebitmap(bmimg); 1 = bmimg; } else { pathtwo = path; bitmap bmimg = bitmapfactory.decodefile(pathtwo); ivtwo.setimagebitmap(bmimg); 2 = bmimg; } } } }
in fragment class
declare below
public static final int dialog_fragment = 1; public static final int result_ok = 101;
then
dialogfragment newfragment = mydialogfragment.newinstance( r.string.name); newfragment.settargetfragment(sherlockfragmentname.this, dialog_fragment); newfragment.show(getfragmentmanager(), "dialog");
then in dialog fragment
.setpositivebutton("ok", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int whichbutton) { intent =getactivity().getintent(); i.putextra("key", true); gettargetfragment().onactivityresult(gettargetrequestcode(), 101, i); } } ) .setnegativebutton("no", new dialoginterface.onclicklistener() { public void onclick(dialoginterface dialog, int whichbutton) { //addexercisefragment.donegativeclick(); intent =getactivity().getintent(); i.putextra("key", false); gettargetfragment().onactivityresult(gettargetrequestcode(), 101, i); } } )
then override onactivityresul
t in fragment class
@override public void onactivityresult(int requestcode, int resultcode, intent data) { switch(requestcode) { case dialog_fragment: if (resultcode == result_ok) { boolean check = data.getbooleanextra("key", true); if(check) { dopositiveclick(); } else { donegativeclick(); } } break; } }
Comments
Post a Comment