0

Я пытаюсь выбрать изображение с картинками 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 это не должно быть трудно, и я работал над предыдущими проектами раньше ...

ответ

0

Уверены ли вы, что ivMain правильно инициализирован?

+0

так что это была действительно очевидная часть, которую я пропустил, полностью глядя на неправильное место. благодаря – Jasper