2013-06-01 35 views
-1

节约位图我有一段代码保存在SD卡中的位图,但我有一个简单的空指针异常错误...一个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):致命例外:Thread-112 06-01 13:20:52.239:E/AndroidRuntime(1340):java.lang.NullPointerException 06-01 13 :20:52.239:E/AndroidRuntime(1340):在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的最好方法是查看堆栈跟踪。 –

+0

@EricCitaire他在代码中评论哪一行是问题;它是'absoluteFilePathSource' –

+0

@BrianRoach好的,我没有看到。 –

相关问题