java - 为什么我的方法返回空值?

标签 java android

我已将变量目录声明为全局变量,并在下面的 returnData 方法中使用该变量,但它返回 null 值。

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;
}

最佳答案

请正确格式化您的问题,这很难阅读。据我所知,您的目录变量不是全局的,它是 saveImage 方法的本地变量。

如果您想从同一类实例的不同方法访问目录变量,则需要将其声明为类变量。例如:

public class MyClass {

    private File directory;

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

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

关于java - 为什么我的方法返回空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495411/

相关文章:

java - 将线旋转指定角度(Java/Android)

java - Haskell 中的类型构造函数和 java 泛型类型有什么不同?

java - 如何将音乐添加到 JFrame?

java - 立即同步 Vaadin 中的两个表

php - WAMP 服务器主页在 android 中打开正常但部署的网页未加载

android - 使用 ADT 20 将 Maven Android Android 项目导入 Eclipse 时出错

java - 设置最大堆大小是否会影响字符串池大小?

java - 使用 try-finally block 处理输入流有什么好处?

java - 使用 ANT 脚本构建 Android 测试项目

带有 itemTouchHelper 的 android 拖放导致 IndexOutOfBoundsException