因此,我使用游标加载器加载了所有图像,并将这些图像传输到适配器(gridview使用的适配器)中。我在gridview上实现了一个单击式侦听器,它将在新活动中显示图像。
所有这些都工作正常,但是,当我按下后退按钮时,我希望返回到我的主要活动(带有所有图像的gridview),但是我的应用程序崩溃了。
这是一些细节。
Oncreate方法。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// The gridview, and the image adapter is set up here.
setupViews();
// Once runtime permission is given, image paths are
// 1. pulled into a cursor,
// 2. added onto the imageAdapter
// 3. and the imageAdapter is set to be used by the gridview.
askForRuntimePermission();
}
askForRuntimePermission和onRequestPermissionsResult(回调方法)。
private void askForRuntimePermission() {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, STORAGE_PERMISSION_CODE);
}
else
{
getSupportLoaderManager().initLoader(MEDIASTORE_LOADER_ID,null,this);
}
}
/**
* Callback method for request permmissions method.
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch(requestCode)
{
case STORAGE_PERMISSION_CODE:
if(grantResults[0]==PackageManager.PERMISSION_GRANTED){
getSupportLoaderManager().initLoader(MEDIASTORE_LOADER_ID,null,this);
}
else
{
Toast.makeText(this,"Permission Denied",Toast.LENGTH_SHORT).show();
finish();
}
break;
}
}
实现游标加载器。
@NonNull
@Override
public Loader<Cursor> onCreateLoader(int i, @Nullable Bundle bundle) {
String[] projection = {MediaStore.Images.Media.DATA};
return new CursorLoader(this,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
null,
null,
MediaStore.Images.Media.DATE_ADDED + " DESC");
}
@Override
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor cursor) {
*transferImagesToAdapter(cursor);*
}
@Override
public void onLoaderReset(@NonNull Loader<Cursor> loader) {
}
transferImagesToAdapter方法是我在其中传输并设置带有适配器的gridView的地方,在网格上显示图像。
但是,如上所述,单击任何图像后,它将在新活动中全屏显示,但是当按下后退按钮时,应用程序将崩溃。
有帮助吗?