android - Nullpointerexcepiton on cursor while selecting photo from gallery on dialog fragment -
i'm trying select photo gallery through dialogfragment
. i'm getting nullpointerexception
while initializing cursor
. ideas why getting error?
below code :
if (resultcode == activity.result_ok) { uri selectedimage = imagereturnedintent.getdata(); string[] filepathcolumn = {mediastore.images.media.data}; // nullpointerexcepiton on line cursor cursor = getactivity().getcontentresolver().query(selectedimage, filepathcolumn, null, null, null); cursor.movetofirst(); int columnindex = cursor.getcolumnindex(filepathcolumn[0]); cursor.close(); }
here logcat error :
03-24 12:34:37.645: e/androidruntime(21479): java.lang.runtimeexception: failure delivering result resultinfo{who=null, request=65538, result=-1, data=intent { dat=content://media/external/images/media/3890 flg=0x1 }} activity {com.example/com.example.mainactivity}: java.lang.nullpointerexception 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread.deliverresults(activitythread.java:3462) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread.handlesendresult(activitythread.java:3505) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread.access$1100(activitythread.java:150) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread$h.handlemessage(activitythread.java:1346) 03-24 12:34:37.645: e/androidruntime(21479): @ android.os.handler.dispatchmessage(handler.java:99) 03-24 12:34:37.645: e/androidruntime(21479): @ android.os.looper.loop(looper.java:213) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread.main(activitythread.java:5225) 03-24 12:34:37.645: e/androidruntime(21479): @ java.lang.reflect.method.invokenative(native method) 03-24 12:34:37.645: e/androidruntime(21479): @ java.lang.reflect.method.invoke(method.java:525) 03-24 12:34:37.645: e/androidruntime(21479): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:741) 03-24 12:34:37.645: e/androidruntime(21479): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:557) 03-24 12:34:37.645: e/androidruntime(21479): @ dalvik.system.nativestart.main(native method) 03-24 12:34:37.645: e/androidruntime(21479): caused by: java.lang.nullpointerexception 03-24 12:34:37.645: e/androidruntime(21479): @ com.example.maindialogfragment.onactivityresult(maindialogfragment.java:226) 03-24 12:34:37.645: e/androidruntime(21479): @ com.example.mainactivity.onactivityresult(delictactivity.java:85) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activity.dispatchactivityresult(activity.java:5322) 03-24 12:34:37.645: e/androidruntime(21479): @ android.app.activitythread.deliverresults(activitythread.java:3458) 03-24 12:34:37.645: e/androidruntime(21479): ... 11 more
how start activity , where? if pass result trough mainactivity, can try make new function in dialogfragment this:
public void onmyactivityresult(context main, int resultcode... on){ main.getcontentresolver....... }
edit: have done in way:
get activity in oncreate:
@override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mactivity = (mainactivity) this.getactivity(); }
then:
@override public void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == request_gallery && resultcode == activity.result_ok) { ... uri selectedimage = data.getdata(); string path = getrealpathfromuri(selectedimage); ... reloadimages(); } super.onactivityresult(requestcode, resultcode, data); }
and:
private string getrealpathfromuri(uri contenturi) { cursor cursor = mactivity.getcontentresolver().query(contenturi, null, null, null, null); if (cursor == null) { // source dropbox or other similar local file // path return contenturi.getpath(); } else { cursor.movetofirst(); int idx = cursor.getcolumnindex(mediastore.images.imagecolumns.data); string path = cursor.getstring(idx); cursor.close(); return path; } }
Comments
Post a Comment