Я пытаюсь выбрать изображение с картинками allready на устройстве. У меня был этот код, работающий в предыдущем приложении, но по какой-то причине он просто не сработает. My onActivityResult дает исключение nullpointer при попытке установить выбранное изображение в изображение, поэтому я предполагаю, что битмап имеет значение NULL. Я пробовал множество руководств и использовал этот код, переписывал все, но каждый раз возникала одна и та же проблема. Я попробовал несколько устройств, работающих под управлением Android 4.4 и Android 4.2.2 (так что это не просто проблема с kitkat).Onactivityresult возвращает нулевое растровое изображение, выбирая изображение с устройства, не работающего
мой код:
public class Iconize extends Activity{
public ImageView ivMain;
LinearLayout topscrollitems;
Bitmap bitmap;
int REQUEST_CODE=1;
FrameLayout fl ;
Context c;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_iconize);
c= getApplicationContext();
topscrollitems = (LinearLayout) this.findViewById(R.id.ll_topscrollview);
fl= (FrameLayout)this.findViewById(R.id.framelayoutholder);
//some stuff not related to this question
//....//
//
final Context c = getApplicationContext();
pickImageFromDevice();
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
System.out.println("STOP");
}
public void pickImageFromDevice() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
startActivityForResult(intent, REQUEST_CODE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
try {
if (bitmap != null) {
bitmap.recycle();
}
InputStream stream = getContentResolver().openInputStream(
data.getData());
bitmap = BitmapFactory.decodeStream(stream);
stream.close();
ivMain.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NullPointerException e){
e.printStackTrace();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
и StackTrace:
04-21 10:28:18.499: W/System.err(25951): java.lang.NullPointerException
04-21 10:28:18.519: W/System.err(25951): at com.sa.iconize.Iconize.onActivityResult(Iconize.java:114)
04-21 10:28:18.519: W/System.err(25951): at android.app.Activity.dispatchActivityResult(Activity.java:5423)
04-21 10:28:18.519: W/System.err(25951): at android.app.ActivityThread.deliverResults(ActivityThread.java:3361)
04-21 10:28:18.519: W/System.err(25951): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)
04-21 10:28:18.519: W/System.err(25951): at android.app.ActivityThread.access$1300(ActivityThread.java:135)
04-21 10:28:18.519: W/System.err(25951): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
04-21 10:28:18.519: W/System.err(25951): at android.os.Handler.dispatchMessage(Handler.java:102)
04-21 10:28:18.519: W/System.err(25951): at android.os.Looper.loop(Looper.java:136)
04-21 10:28:18.519: W/System.err(25951): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-21 10:28:18.519: W/System.err(25951): at java.lang.reflect.Method.invokeNative(Native Method)
04-21 10:28:18.519: W/System.err(25951): at java.lang.reflect.Method.invoke(Method.java:515)
04-21 10:28:18.519: W/System.err(25951): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-21 10:28:18.519: W/System.err(25951): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-21 10:28:18.519: W/System.err(25951): at dalvik.system.NativeStart.main(Native Method)
, где линия, где происходит ошибка:
ivMain.setImageBitmap(bitmap);
Я думаю, что мне не хватает что-то действительно очевидное, becau se это не должно быть трудно, и я работал над предыдущими проектами раньше ...
так что это была действительно очевидная часть, которую я пропустил, полностью глядя на неправильное место. благодаря – Jasper