0

我是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”路径中。我想在画廊中获取图像,但我不能。我不知道是什么原因导致了这个异常,任何人都可以告诉解决方案

4

3 回答 3

0

我认为您不能直接从计算机路径中获取图像

您必须将该图像复制到应用程序的可绘制或评估文件夹中。

或者您的图像应该驻留在您的设备或模拟器库任何其他文件夹中。但它应该在您正在测试的设备或模拟器中。

请参阅您使用的教程中的这一行。

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

String targetPath = ExternalStorageDirectoryPath + "/test/";

所以这是你的设备的 sdcard 路径- 外部存储路径。

于 2013-03-18T11:49:40.267 回答
0

尝试这个..

File targetDir=getDir("Libraries\Pictures\homepage",Context.MODE_PRIVATE);
 String targetPath=targetDir.toString();
于 2013-03-18T11:40:07.597 回答
0

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

if (files == null) {
    // handle case where the file object is not a directory
}
else {
for(File f : files){
        myHorizontalLayout.add(f.getAbsolutePath());
    }
}
于 2013-03-18T11:40:14.293 回答