Java 可能尚未为AssetManager Drawable初始化局部变量

Java 可能尚未为AssetManager Drawable初始化局部变量,java,android,drawable,Java,Android,Drawable,我有一个类,我试图在Android应用程序中使用AssetManager读取图像。我必须在另一个类中调用这个类 import android.app.Activity; import android.content.res.AssetManager; import android.graphics.drawable.Drawable; import android.util.Log; import java.io.IOException; import java.io.InputStream;

我有一个类,我试图在Android应用程序中使用AssetManager读取图像。我必须在另一个类中调用这个类

import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.drawable.Drawable;
import android.util.Log;

import java.io.IOException;
import java.io.InputStream;

public class AssetActivity extends Activity {
    private static final String TAG = "AssetActivity";

    public Drawable getImage(String imgName) {
        AssetManager assets = getAssets(); // get app's AssetManager
        InputStream stream; // used to read in Image images
        String nextImageName = imgName;
        Drawable flag;
        try {
            // get an InputStream to the asset representing the next Image
            stream = assets.open(nextImageName + ".jpg");

            // load the asset as a Drawable and display on the objImageView
             flag = Drawable.createFromStream(stream, nextImageName);
        } // end try
        catch (IOException e) {
            Log.e(TAG, "Error loading " + nextImageName, e);
        } // end catch
        return flag;
    }}
我收到错误,局部变量标志可能尚未初始化。
请告诉我如何避免这个错误。提前非常感谢。

您需要给它一些默认值,因为JVM不能确定

flag = Drawable.createFromStream(stream, nextImageName);
行被执行。因此,当您尝试使用该值时,该值可能未定义

例如,您可以这样声明它:

Drawable flag = null;

您需要给它一些默认值,因为JVM不能确定

flag = Drawable.createFromStream(stream, nextImageName);
行被执行。因此,当您尝试使用该值时,该值可能未定义

例如,您可以这样声明它:

Drawable flag = null;
您正在这样做:

return flag;
如果发生异常,您将捕获它,但执行将继续。在这种情况下,
标志
尚未初始化:

catch (IOException e) {
    Log.e(TAG, "Error loading " + nextImageName, e);
} // end catch
return flag; // <-------------- here an uninitialized flag is returned
             //                 if an exception occured
catch(IOE异常){
Log.e(标记“错误加载”+nextImageName,e);
}//端盖
返回标志;// 您正在这样做:

return flag;
如果发生异常,您将捕获它,但执行将继续。在这种情况下,
标志
尚未初始化:

catch (IOException e) {
    Log.e(TAG, "Error loading " + nextImageName, e);
} // end catch
return flag; // <-------------- here an uninitialized flag is returned
             //                 if an exception occured
catch(IOE异常){
Log.e(标记“错误加载”+nextImageName,e);
}//端盖

返回标志;// 您需要将变量标志设置为初始值,可以为null


如果出现异常,则不会在try块中设置该值,因为编译器对此表示不满。

您需要使用初始值设置变量标志,该值可能为null

如果出现异常,则不会在try块中设置该值,因为编译器会对此进行投诉