运行应用程序时出现java.lang.NullPointerException

时间:2013-03-18 11:34:26

标签: java android

我是Android开发的新手。我从以下链接下载了源文件

http://android-er.blogspot.in/2012/07/implement-custom-linearlayout-for.html,但在尝试在模拟器中运行时显示

java.lang.NullPointerException at com.example.androidhorizontalscrollviewgallery.MainActivity.onCreate(MainActivity.java:27)

我的MainActivity.java代码如下:

package com.example.androidhorizontalscrollviewgallery;

import java.io.File;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

MyHorizontalLayout myHorizontalLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myHorizontalLayout = (MyHorizontalLayout)findViewById(R.id.mygallery);


    File targetDir=getDir("Pictures",Context.MODE_PRIVATE);

    String targetPath=targetDir+ "/homepage/";
    File targetDirector = new File(targetPath);

    File[] files = targetDirector.listFiles();

    for(File f : files){

        myHorizontalLayout.add(f.getAbsolutePath());
    }


    }
}

这里我将我的图像存储在计算机的“Libraries \ Pictures \ homepage”路径中。我想在画廊中获取图像,但我不能。我不知道是什么导致这个例外,任何人都可以告诉解决方案

3 个答案:

答案 0 :(得分:0)

试试这个..

File targetDir=getDir("Libraries\Pictures\homepage",Context.MODE_PRIVATE);
 String targetPath=targetDir.toString();

答案 1 :(得分:0)

从异常开始,第27行有一个空指针,这意味着您正在迭代的文件对象为null。您使用listFiles方法获取该对象,但listFiles方法可以返回null。您必须检查是否有null以避免应用程序崩溃。见下面的例子。另请参阅File class documentation

if (files == null) {
    // handle case where the file object is not a directory
}
else {
for(File f : files){
        myHorizontalLayout.add(f.getAbsolutePath());
    }
}

答案 2 :(得分:0)

我认为您无法直接从计算机路径获取图像

您必须复制应用程序的drawable或assests文件夹中的图像。

或者您的图片应位于您的设备或模拟器库任何其他文件夹中。但无论你在哪个测试中,它都应该在设备或模拟器中。

在您使用的教程中查看此行。

String ExternalStorageDirectoryPath = Environment
      .getExternalStorageDirectory()
      .getAbsolutePath();

String targetPath = ExternalStorageDirectoryPath + "/test/";

这是您的设备的SD卡路径 - 外部存储路径。