【问题标题】:Android : ArrayList with Bitmap from assetsAndroid:带有来自资产的位图的 ArrayList
【发布时间】:2015-10-29 15:53:02
【问题描述】:

我一直在尝试从资产目录中的图像中列出一个列表, 这是我的代码

ArrayList<Bitmap> list = new ArrayList<>();

    try{
        String[] PathFiles = assetManager.list("img");
        for (int i = 0; i < PathFiles.length; i++) {
            InputStream is = assetManager.open("img/" + PathFiles[i]);
            Bitmap bitmap = BitmapFactory.decodeStream(is);
            list.add(i, bitmap);
        }
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }

但是,一旦执行此代码,我的应用就会崩溃。 会有什么问题?

应用程序的logcat:

10-29 18:19:06.712  18272-18272/com.example.mohammed.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.mohammed.myapplication, PID: 18272
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mohammed.myapplication/com.example.mohammed.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] android.content.res.AssetManager.list(java.lang.String)' on a null object reference
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2790)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2855)
            at android.app.ActivityThread.access$900(ActivityThread.java:181)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:6117)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String[] android.content.res.AssetManager.list(java.lang.String)' on a null object reference
            at com.example.mohammed.myapplication.MainActivity.onCreate(MainActivity.java:49)
            at android.app.Activity.performCreate(Activity.java:6374)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2743)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2855)
            at android.app.ActivityThread.access$900(ActivityThread.java:181)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:145)
            at android.app.ActivityThread.main(ActivityThread.java:6117)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

【问题讨论】:

  • 有很多情况会导致您的应用程序崩溃,最好先发布堆栈跟踪而不是像@Stefan Beike 回答的那样初始化列表
  • assetManager 为空。您能否发布有关如何获取它的代码?
  • 主要活动的第 49 行是什么?
  • 你好像没有初始化assetManager
  • 检查PathFiles,assetManager变量,我认为其中一个为空

标签: java android android-bitmap android-assets


【解决方案1】:

我会说你在这里得到一个NullPointerException

list.add(i, bitmap);

你没有创建ArrayList:

ArrayList<Bitmap> list;

尝试一下:

ArrayList<Bitmap> list = new ArrayList<>;

【讨论】:

  • 它已经初始化并且仍然崩溃
【解决方案2】:

你需要先初始化你的数组列表

ArrayList<Bitmap> list=new ArrayList<>();

【讨论】:

  • 请发布你的日志
  • 现在空指针异常是针对资产管理器的初始化,你初始化了吗?
  • 是的,我没有忘记这样做,但它解决了问题,非常感谢:D
猜你喜欢
  • 1970-01-01
  • 2018-08-07
  • 2012-03-13
  • 1970-01-01
  • 2021-06-25
  • 2018-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多