我是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”路径中。我想在画廊中获取图像,但我不能。我不知道是什么导致这个例外,任何人都可以告诉解决方案
答案 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卡路径 - 外部存储路径。