我正在Fragment Activity
中实施水平图库,但我无法获取图片,因此返回NullPointerException
:
LinearLayout myGallery;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
myGallery = (LinearLayout) getActivity().findViewById(R.id.mygallery);
String targetPath = "assets/";
Toast.makeText(getActivity(), targetPath, Toast.LENGTH_LONG).show();
File targetDirector = new File(targetPath);
File[] files = targetDirector.listFiles();
for (File file : files){ //NullPointerException here
myGallery.addView(insertPhoto(file.getAbsolutePath()));
}
}
这是我的图片的路径:
for循环NullPointerException
for (File file ; files){ ...
点
到达我的文件夹的正确方法是什么?
答案 0 :(得分:2)
正确的方法是......将您的图片放入assets
文件夹(或raw
)。
不在res
。
创建assets
文件夹(如果尚未存在)
在res
的相同级别,不在其中。
要获取您的资源,请使用类似的内容(在这种情况下,该文件位于gfx
下的assets
文件夹下):
final InputStream is = getApplicationContext().getAssets().open("gfx/" + fileName);
final Drawable drw = Drawable.createFromStream(is, null);
你有assets
如果您想将资源直接放入assets
而不是添加文件夹,只需更改此内容
getApplicationContext().getAssets().open("gfx/" + fileName);
到
getApplicationContext().getAssets().open(fileName);