android - StartActivityForResult from Fragmnet -
i have 2 imageview , 2 buttons. when button pressed - dialog started. positive answer - picture galery, negative - camera. first write in activity(this code work good):
@override protected void onactivityresult(int requestcode, int resultcode, intent imagereturnedintent) { string path = null; if (dialogflag == 0) { super.onactivityresult(requestcode, resultcode, imagereturnedintent); 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 = 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; } } } } @override protected dialog oncreatedialog(int id) { switch (id) { case idd_two_buttons: alertdialog.builder builder = new alertdialog.builder(this); builder.setmessage("Зображення з ") .setcancelable(false) .setpositivebutton("Галереї", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { dialogflag = 0; intent photopickerintent = new intent( intent.action_pick); photopickerintent.settype("image/*"); startactivityforresult(photopickerintent, gallery_request); dialog.cancel(); } }) .setneutralbutton("Камери", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { dialogflag = 1; intent cameraintent = new intent( mediastore.action_image_capture); startactivityforresult(cameraintent, camera_result); dialog.cancel(); } } ) .setnegativebutton("Відміна", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { dialog.cancel(); } } ); return builder.create(); default: return null; } }
but when try make in fragment problem.
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).setcancelable(false) .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); } } ) .create(); } }
onactivityresult in addexercisefragment
@override public void onactivityresult(int requestcode, int resultcode, intent imagereturnedintent) { string path = null; switch (requestcode) { case dialog_fragment: boolean check = imagereturnedintent.getbooleanextra("key", true); if (check) { dopositiveclick(); if (resultcode == result_ok && requestcode == gallery_request) { 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; } } } else { donegativeclick(); uri uri; 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; } } break; } } public void dopositiveclick() { dialogflag = 0; intent photopickerintent = new intent(intent.action_pick); photopickerintent.settype("image/*"); startactivityforresult(photopickerintent, gallery_request); // dialog.cancel(); } public void donegativeclick() { dialogflag = 1; intent cameraintent = new intent(mediastore.action_image_capture); startactivityforresult(cameraintent, camera_result); } void showdialog() { dialogfragment newfragment = mydialogfragment .newinstance(r.string.name); newfragment.show(getfragmentmanager(), "dialog"); }
but have next:
- if want set image galery-it start galery, can not choose picture there
- from camera can set picture once , 1 imageview
- when in galery , press button "back" - error.
Comments
Post a Comment