- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试开发一个应用程序,它在 SDCard 的一个文件夹中创建图像并显示它们(“MyCreatedImages”文件夹现在显示在图库中),现在我正在尝试从一个给定的文件夹中加载所有图像 GridView 布局。我正在使用以下代码,但是由于我无法理解的原因,我不断收到 NPE。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.activity_my_image_fragment,
container, false);
// Set up an array of the Thumbnail Image ID column we want
String[] projection = { MediaStore.Images.Thumbnails._ID };
// Create the cursor pointing to the SDCard
cursor = getActivity().getContentResolver().query(
Uri.parse("file://" + Environment.getExternalStorageDirectory()+ File.separator + "MyCreatedImages"), projection,
null, null, MediaStore.Images.Thumbnails._ID);
// Get the column index of the Thumbnails Image ID
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
GridView gridview = (GridView) root.findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this.getActivity()));
//this.registerForContextMenu(gridview);
return root;
}
还有我的 Gridview 适配器:
private class ImageAdapter extends BaseAdapter {
private Context context;
public ImageAdapter(Context localContext) {
context = localContext;
}
public int getCount() {
return cursor.getCount();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView picturesView;
if (convertView == null) {
picturesView = new ImageView(context);
// Move cursor to current position
cursor.moveToPosition(position);
// Get the current value for the requested column
int imageID = cursor.getInt(columnIndex);
// Set the content of the image based on the provided URI
picturesView.setImageURI(Uri.withAppendedPath(
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
"" + imageID));
picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
picturesView.setPadding(8, 8, 8, 8);
picturesView
.setLayoutParams(new GridView.LayoutParams(100, 100));
} else {
picturesView = (ImageView) convertView;
}
return picturesView;
}
}
打开此 fragment 后,我收到以下 LogCat 错误:
09-23 16:25:06.286: E/AndroidRuntime(28497): FATAL EXCEPTION: main
09-23 16:25:06.286: E/AndroidRuntime(28497): java.lang.NullPointerException
09-23 16:25:06.286: E/AndroidRuntime(28497): at com.meme.hdmeme.MyMemeFragment.onCreateView(MyMemeFragment.java:51)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1478)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:927)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.os.Handler.handleCallback(Handler.java:615)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.os.Handler.dispatchMessage(Handler.java:92)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.os.Looper.loop(Looper.java:137)
09-23 16:25:06.286: E/AndroidRuntime(28497): at android.app.ActivityThread.main(ActivityThread.java:4921)
09-23 16:25:06.286: E/AndroidRuntime(28497): at java.lang.reflect.Method.invokeNative(Native Method)
09-23 16:25:06.286: E/AndroidRuntime(28497): at java.lang.reflect.Method.invoke(Method.java:511)
09-23 16:25:06.286: E/AndroidRuntime(28497): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
09-23 16:25:06.286: E/AndroidRuntime(28497): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
09-23 16:25:06.286: E/AndroidRuntime(28497): at dalvik.system.NativeStart.main(Native Method)
第 51 行是:
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
最佳答案
试试这个函数从 sd 卡中获取图像:
ArrayList<String> f = new ArrayList<String>(); // list of available files in path
File[] listFile;
public void getSdcardImages()
{
File file= new File(android.os.Environment.getExternalStorageDirectory(),"MyFolder");
if (file.isDirectory())
{
listFile = file.listFiles();
for (int i = 0; i < listFile.length; i++)
{
f.add(listFile[i].getAbsolutePath());
}
}
}
使用权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
然后通过 Adapter 在 Grid View 中设置:
GridView imggrid = (GridView) findViewById(R.id.imgGrid);
imgAdapter = new ImageAdapter();
imggrid .setAdapter(imgAdapter);
如下设置适配器:
public class ImageAdapter extends BaseAdapter {
private LayoutInflater mInflater;
public ImageAdapter() {
mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return f.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(
R.layout.gallery, null);
holder.imageview = (ImageView) convertView.findViewById(R.id.thumb);
convertView.setTag(holder);
}
else {
holder = (ViewHolder) convertView.getTag();
}
Bitmap myBitmap = BitmapFactory.decodeFile(f.get(position));
holder.imageview.setImageBitmap(myBitmap);
return convertView;
}
}
class ViewHolder {
ImageView imageview;
}
关于android - 从 GridView 中的特定 SDCard 文件夹加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18963152/
我在 /data/data/files/settings.dat 中有一个文件并想将此文件存储/复制到 sdcard 中,该文件已被很好地读取但是当尝试将其复制到 sdcard 时,我有一个异常(ex
我只想知道如何在android模拟器中删除虚拟sdcard。 最佳答案 有了有关使用“rm -r *”系列命令的预期注意事项和警告,您还可以使用:adb -e shell rm -r/mnt/sdca
我正在尝试将位图保存到图片目录中。这是代码 File path = Environment.getExternalStoragePublicDirectory(Environm
我有一个很大的(50 兆)下载,如果已安装,我想将其加载到 SD 卡中。如果没有sdcard,我就下载到内部存储。我检查两种情况下的可用空间。 我的代码在模拟器和我的 Droid 2 上运行良好。我的
我快被一个奇怪的问题气疯了。如果我在我的代码中创建一个文件夹作为 directory_path = Environment.getExternalStorageDirectory()
我有一个特殊的问题,我有一个在启动完成时启动的 android 服务。服务完成从 sdcard 读取文件并将 pid 写入 sdcard 的工作,但是 .使用日志我知道原因是:无法将数据写入 sdca
我正在为 Yocto (Morty) 开发一个 sdcard 图像类,这基本上是直截了当的。必须在屋顶完成后构建 SD 卡镜像。 这可以由 IMAGE_TYPEDEP_sdcard 指示,在我的情况下
任何人都可以帮我解决 traceview 问题!我创建了 sdcard 并将其安装在我的模拟器上,关闭我的应用程序后,当我尝试拉取复制文件时(使用命令:adb pull/sdcard/calc.tra
我正在开发一个基本的音乐播放器,它将获取 SDCard 上的歌曲。它处于早期阶段,我遇到了一个小问题。每当我在手机上运行该应用程序时,它都能很好地播放 SDCard 上的歌曲。现在,当我在教师手机上运
我正在尝试将我在某些 Activity 中拥有的位图保存到我为此目的创建的目录中的外部存储。将图像保存到 sdcard(外部存储器,而不是外部 sd)的方法在不同的类(和不同的包)中,所以我假设我需要
我知道这个问题可能已经回答了很多次,我也进行了搜索,但我无法解决我的问题。每次我尝试写入 SD 卡时,它似乎都会写入内部存储。我的代码行很简单 File root = android.os.Envir
我想知道,是否可以在重新启动应用程序时暂停下载,退出应用程序并恢复从远程服务器下载文件到手机的 SDCard。 然后跟进问题:我有一个通过 HTTP 下载的代码。我也可以通过 FTP 完成吗?哪个更好
我的应用程序中有一个 Activity ,它基本上是一个画廊,显示位于我的 SD 卡上的图片。我正在使用此功能重新安装 sdcard 以在 Activity 开始时扫描新图像: sendBro
我想在 SD 卡上的特定文件夹中创建新文件时收到通知(通过广播)。我可以创建服务并为其轮询,但我更喜欢系统事件(如果存在的话)。 最佳答案 我找到了。 FileObserver会做的。 关于Andro
随着我应用中数据库的增长,它需要越来越多的内部手机空间。数据库中没有任何敏感/隐私数据,因此我有兴趣将其移至 SD 卡。 我正在使用 SQLiteOpenHelper 来协助数据库工作。据我了解,您不
我正在尝试将 Http 帖子回复中的文件写入 sdcard 上的文件。在检索到数据的字节数组之前,一切正常。 我尝试在 list 中设置 WRITE_EXTERNAL_STORAGE 权限并尝试了我在
我想在 Sdcard 中创建目录,并且我确实遵循: 我添加了:在 list 中。 我通过以下方式获取 root_path:public static final String ROOT_PATH =
我正在尝试使用以下代码在/storage/emulated/0/Pictures 下创建目录: File(Environment.getExternalStoragePublicDir
为什么Environment.getExternalStorageDirectory()返回内部存储(storage/sdcard0/)?就我而言,sdcard0 是本地的,sdcard1 是外部的.
我的对话框显示目录 /sdcard 及其所有文件。选择文件/图像后,路径将与位图图像一起保存,例如 file.name = "/sdcard/Pictures/Screenshots/Screensh
我是一名优秀的程序员,十分优秀!