2013-06-01 4 views
-1

У меня есть кусок кода, чтобы сохранить Bitmap в SD-карте, но у меня есть простая ошибка Exception Null Pointer ...NullPointerException при сохранении растрового изображения в Android

String sdcardState = android.os.Environment.getExternalStorageState();  
    String destPath = null; 
///////////////////////////////////////////////////////////////////////////////////// 
int indexSepar=absoluteFilePathSource.lastIndexOf(File.separator);//THIS IS THE ERROR LINE 
//////////////////////////////////////////////////////////////////////////////////// 
    int indexPoint=absoluteFilePathSource.lastIndexOf("."); 
    if(indexPoint<=1) 
     indexPoint=absoluteFilePathSource.length(); 
    String fileNameDest=absoluteFilePathSource.substring(indexSepar+1, indexPoint); 

    fileNameDest+="_AMNET"; 
    if (sdcardState.contentEquals(android.os.Environment.MEDIA_MOUNTED)) 
     destPath = android.os.Environment.getExternalStorageDirectory() 
       + File.separator + fileNameDest+".png"; 

    OutputStream fout = null; 
    try { 

     Log.v("Path", destPath); 
     fout = new FileOutputStream(destPath);   
     destBitmap.compress(Bitmap.CompressFormat.PNG, 100, fout); 
     if(!IS_ENCODE_IMAGE_CH) 
      Media.insertImage(getContentResolver(),destPath, fileNameDest, "AMNET Encoded"); 
     result=Uri.parse("file://"+destPath); 
     sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, result)); 
     fout.flush(); 
     fout.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    destBitmap.recycle(); 

вот мой журнал кот:

06-01 13:20:52.239: E/AndroidRuntime(1340): FATAL EXCEPTION: Thread-112 
06-01 13:20:52.239: E/AndroidRuntime(1340): java.lang.NullPointerException 
06-01 13:20:52.239: E/AndroidRuntime(1340):  at ir.megadev.amnet.MainActivity.encode(MainActivity.java:844) 
    06-01 13:20:52.239: E/AndroidRuntime(1340):  at ir.megadev.amnet.MainActivity.access$2(MainActivity.java:769) 
    06-01 13:20:52.239: E/AndroidRuntime(1340):  at ir.megadev.amnet.MainActivity$10$1.run(MainActivity.java:430) 
    06-01 13:20:52.239: E/AndroidRuntime(1340):  at java.lang.Thread.run(Thread.java:856) 
+0

положить LogCat здесь .. – Riser

+0

Существует ровно одна причина для NPE; у вас есть переменная, которая имеет значение «null», и вы пытаетесь ее использовать. –

+0

06-01 13: 20: 52.239: E/AndroidRuntime (1340): FATAL EXCEPTION: Thread-112 06-01 13: 20: 52.239: E/AndroidRuntime (1340): java.lang.NullPointerException 06-01 13 : 20: 52.239: E/AndroidRuntime (1340): at ir.megadev.amnet.MainActivity.encode (MainActivity.java:844) 06-01 13: 20: 52.239: E/AndroidRuntime (1340): at ir.megadev .amnet.MainActivity.access $ 2 (MainActivity.java:769) 06-01 13: 20: 52.239: E/AndroidRuntime (1340): at ir.megadev.amnet.MainActivity $ 10 $ 1.run (MainActivity.java:430) 06-01 13: 20: 52.239: E/AndroidRuntime (1340): at java.lang.Thread.run (Thread.java:856) –

ответ

3

absoluteFilePathSource является нулевым

+0

Или 'destPath' равно null. Во всяком случае, лучший способ узнать, какая переменная имеет значение null, - это посмотреть на стек. –

+0

@ EricCitaire он комментирует код, который является проблемой; это 'absoluteFilePathSource' –

+0

@BrianRoach Хорошо, я этого не видел. –

Смежные вопросы