2012-09-10 29 views
0

我想了解如何使用光标指定在sdcard中指定的文件夹中的jpg文件。我想在一个特定的文件夹用光标选择JPG文件,我想这一点:如何从指定位置用光标读取jpg文件

这是代码:

但是这个代码给我的错误。

这里是logcat的:

E/AndroidRuntime(11986): FATAL EXCEPTION: main 
E/AndroidRuntime(11986): android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x26a490 
E/AndroidRuntime(11986): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:158) 
E/AndroidRuntime(11986): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:114) 
E/AndroidRuntime(11986): at android.content.ContentProviderProxy.bulkQueryInternal(ContentProviderNative.java:330) 
E/AndroidRuntime(11986): at android.content.ContentProviderProxy.query(ContentProviderNative.java:366) 
E/AndroidRuntime(11986): at android.content.ContentResolver.query(ContentResolver.java:245) 
E/AndroidRuntime(11986): at it.bisemanuDEV.slidepuzzle.SelectImagePreference.getRandomImage(SelectImagePreference.java:126) 
E/AndroidRuntime(11986): at it.bisemanuDEV.slidepuzzle.TileView.newGame(TileView.java:156) 
E/AndroidRuntime(11986): at it.bisemanuDEV.slidepuzzle.SlidePuzzleActivity.onOptionsItemSelected(SlidePuzzleActivity.java:377) 
E/AndroidRuntime(11986): at android.app.Activity.onMenuItemSelected(Activity.java:2762) 
E/AndroidRuntime(11986): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730) 
E/AndroidRuntime(11986): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
E/AndroidRuntime(11986): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
E/AndroidRuntime(11986): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 
E/AndroidRuntime(11986): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
E/AndroidRuntime(11986): at android.view.View$PerformClick.run(View.java:8819) 
E/AndroidRuntime(11986): at android.os.Handler.handleCallback(Handler.java:603) 
E/AndroidRuntime(11986): at android.os.Handler.dispatchMessage(Handler.java:92) 
E/AndroidRuntime(11986): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime(11986): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime(11986): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(11986): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime(11986): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime(11986): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime(11986): at dalvik.system.NativeStart.main(Native Method) 

回答

0

当我明白你的权利,你要设置一个ImageView的从你的SD卡的图像。如果是这样,你可以不喜欢它在我的例子:

ImageView shopLogo = (ImageView) findViewById(R.id.img); 
Resources res = getResources(); 
Bitmap bmp = BitmapFactory.decodeFile(YOUR_SDCARD_PATH); 
BitmapDrawable bd = new BitmapDrawable(res, bmp); 
shopLogo.setBackgroundDrawable(bd); 

的YOUR_SDCARD_PATH包含:

Environment.getExternalStorageDirectory().getAbsolutePath() + "/Directory/image.jpg"; 


Environment.getExternalStorageDirectory().getAbsolutePath() 

给你回的路径SD卡。

+0

我想用光标选择特定文件夹中的jpg文件。我用代码和日志编辑我的文章 – David

0

从例外您有:

cursor.moveToPosition(new Random().nextInt(cursor.getCount())); 

更多precisly:

new Random().nextInt(cursor.getCount()) 

将返回cursor.getCount(),这是光标的范围之外。

Random().nextInt(n) Java文档:

Returns a pseudo-random uniformly distributed int in the half-open range [0, n). 

这意味着它可以返回否。所以,如果你想使你的代码工作,尝试new Random().nextInt(cursor.getCount() -1),因为你已经测试了cursor.getCount() > 0

+0

'[0,n)是0≤x