2016-05-28 8 views
0

変数ディレクトリをグローバルとして宣言しました。returnDataメソッドのナットで、以下の変数を使用してnullの値を返します。なぜ私のメソッドはnull値をretruniing?

public void SaveImage(String FileName, Bitmap mBitmap) { 

    if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { 
     String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString(); 

     File directory = new File(root + File.separator + "HMS_BARCODE"); 
     directory.mkdirs(); 
     //create a file to write bitmap data 
     File f = new File(directory, FileName + ".png"); 
     Log.e("dir", "" + directory); 
     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e("IOException", "IOException"); 
     } 

     //Convert bitmap to byte array 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     mBitmap.compress(Bitmap.CompressFormat.PNG, 0, bos); 
     byte[] bytearray = bos.toByteArray(); 

     //Write bytes in file 
     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(f); 
      fos.write(bytearray); 
      fos.flush(); 
      fos.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.e("Exception", "" + e); 
     } 

    } else { 

     String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString(); 
     directory = new File(root + File.separator + "HMS_BARCODE"); 
     if (!directory.exists()) { 
      directory.mkdirs(); 
     } 

     File f = new File(directory, FileName + ".png"); 
     Log.e("dir1", "" + directory); 



     try { 
      f.createNewFile(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e("IOException", "IOException"); 
     } 
     Log.e("dir1", "" + directory); 

     //Convert bitmap to byte array 
     ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
     mBitmap.compress(Bitmap.CompressFormat.PNG, 0, bos); 
     byte[] bytearray = bos.toByteArray(); 

     //Write bytes in file 
     FileOutputStream fos = null; 
     try { 
      fos = new FileOutputStream(f); 
      fos.write(bytearray); 
      fos.flush(); 
      fos.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.e("Exception", "" + e); 
     } 

    } 


} 

// this is method returning null value I want want that directory 
// value to pass to another class 
public File returnData() { 
    Log.e("Exception", "" + directory); 
    return directory; 
} 
+1

我々はlogcatを持つことができますか? –

+0

https://en.wikipedia.org/wiki/Variable_shadowing – njzk2

答えて

1

正しい形式で入力してください。読みにくいです。あなたのディレクトリ変数がグローバルではないことから、saveImageメソッドのためにローカルです。

同じクラスインスタンスの異なるメソッドからディレクトリ変数にアクセスする場合は、クラス変数として宣言する必要があります。たとえば:

public class MyClass { 

    private File directory; 

    public void saveImage(...) {....} 

    public File returnData(...) {...} 
} 
+0

私はそれをグローバルにしか宣言していません –

+0

@ ShivarajRajagolkarコードでは見えませんが、あなたがそれをグローバルに宣言したと仮定すると、実際にはあなたが 'File directory = new File(root + File.separator + "HMS_BARCODE");'を実行したときにsaveImageメソッドを呼び出すと、 –

+0

実際に私は他の部分だけを取っています.. –

0

はあなたのreturnData方法でSaveImageメソッドを呼び出す必要があります。

//this is method returning null value i  want want that directory value to  pass to another class 
public File returnData(){ 
    SaveImage(.../*the parameters*/); 
    Log.e("Exception", "" + directory); 
    return directory; 
} 
関連する問題