imageview - getting java.lang.classCastException:android.os.Bundle -
i trying show pic clicked camera on activity image view,but getting image out of bundle bitmaps.. error. code
package com.example.iwm; import java.io.file; import java.text.simpledateformat; import android.net.uri; import android.os.build; import android.os.bundle; import android.os.environment; import android.annotation.suppresslint; import android.annotation.targetapi; import android.app.activity; import android.content.intent; import android.util.log; import android.view.menu; import android.widget.toast; public class mainactivity extends activity { private static final int capture_image_activity_request_code = 100; //private static final int result_ok = -1; private static final int media_type_image = 1; public static bundle s = null; //public static string y ; private uri fileuri; private static intent intent; private static intent intent2; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // create intent take picture , return control calling application intent = new intent(android.provider.mediastore.action_image_capture); fileuri = getoutputmediafileuri(media_type_image); // create file save image intent.putextra(android.provider.mediastore.action_image_capture, fileuri); // set image file name // start image capture intent startactivityforresult(intent, capture_image_activity_request_code); //onactivityresult(capture_image_activity_request_code, int resultcode, intent) } private uri getoutputmediafileuri(int type) { // todo auto-generated method stub return uri.fromfile(getoutputmediafile(type)); } /** create file saving image or video */ @suppresslint("simpledateformat") private static file getoutputmediafile(int type){ // safe, should check sdcard mounted // using environment.getexternalstoragestate() before doing this. file mediastoragedir = new file(environment.getexternalstoragepublicdirectory( environment.directory_pictures), "iwmp-images"); // location works best if want created images shared // between applications , persist after app has been uninstalled. // create storage directory if not exist if (! mediastoragedir.exists()){ if (! mediastoragedir.mkdirs()){ log.d("iwmp-images", "failed create directory"); return null; } } // create media file name string timestamp = new simpledateformat("yyyymmdd_hhmmss").format(new java.util.date()); file mediafile; if (type == media_type_image){ mediafile = new file(mediastoragedir.getpath() + file.separator + "img_"+ timestamp + ".jpg"); } else { return null; } return mediafile; } @targetapi(build.version_codes.honeycomb_mr1) @override protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == capture_image_activity_request_code) { if (resultcode == result_ok) { // image captured , saved fileuri specified in intent toast.maketext(this, "image saved to:\n" + fileuri, toast.length_long).show(); s =data.getextras(); intent2 = new intent(mainactivity.this,mainactivity2.class); intent2.putextra("image", s); intent2.setflags(intent.flag_activity_new_task); getapplicationcontext().startactivity(intent2); } else if (resultcode == result_canceled) { // user cancelled image capture } else { // image capture failed, advise user toast.maketext(this, "image not saved ", toast.length_long).show(); } } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.activity_main, menu); return true; } } ` from saving data(intent) in bundle s , sending activty2
my activity2 code
package com.example.iwm; import android.os.bundle; import android.app.activity; import android.graphics.bitmap; import android.view.menu; import android.view.view; import android.widget.imageview; import android.widget.textview; public class mainactivity2 extends activity { textview tx; bitmap bmp; imageview ivuserimage; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main_activity2); ivuserimage = (imageview)findviewbyid(r.id.image); tx = (textview)findviewbyid(r.id.text1); //tx.settext(mainactivity.y); bundle bundle = getintent().getextras(); try { bmp =(bitmap)bundle.get("image"); } catch(exception e) { tx.settext(e.tostring()); } ivuserimage.setimagebitmap(bmp); //int i=10; } public void upload(view view) { } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.activity_main_activity2, menu); return true; } }
can u try this
get image path after u taken camera this
protected void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == capture_image_activity_request_code) { if (resultcode == result_ok) { final string[] imagecolumns = { mediastore.images.media._id, mediastore.images.media.data }; final string imageorderby = mediastore.images.media._id + " desc"; cursor imagecursor = managedquery( mediastore.images.media.external_content_uri, imagecolumns, null, null, imageorderby); if (imagecursor.movetofirst()) { string pathoflasttakenimage = imagecursor.getstring(imagecursor .getcolumnindex(mediastore.images.media.data)); } } pass imagepath in bundle this
intent intent = new intent(mainactivity.this, mainactivity2.class); bundle bundle = new bundle(); bundle.putstring("path", pathoflasttakenimage); intent.putextras(bundle); startactivity(intent); in activity use imagepath show image in imageview this
bundle b = getintent().getextras(); string path = b.getstring("path"); bitmapfactory.options opts = new bitmapfactory.options(); opts.insamplesize = 2; // 1/2 image loaded bitmap thumb = bitmap.createscaledbitmap( bitmapfactory.decodefile(path, opts), 96, 96, false); ivuserimage.setimagebitmap(thumb); let tell me what's problem in way u face.
Comments
Post a Comment