我想在图像选择器意图中添加删除选项,我成功添加了图库选项和相机选项,这些工作正常,但我想添加删除选项,如果我选择删除选项,图像应从imageview中删除。
提前致谢:)
我的代码:
public void edit_profile_pic(View view) {
Uri uri = null;
Intent GalleryIntent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent CameraIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
CameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
Intent chooserIntent = Intent.createChooser(CameraIntent, "Choose");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {GalleryIntent, CameraIntent});
startActivityForResult(chooserIntent, RESULT_LOAD_IMG);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
ImageView imageView = (ImageView) findViewById(R.id.profile_profile_picture);
if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
{
Bitmap bitmap = null;
if(data.getData()!=null)
{
try
{
InputStream stream = getContentResolver().openInputStream(data.getData());
bitmap = BitmapFactory.decodeStream(stream);
stream.close();
imageView.setImageBitmap(bitmap);
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
bitmap=(Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(bitmap);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
答案 0 :(得分:6)
通过创建一个主题为NoDisplay的新活动,我能够通过意图选择器执行此操作:
首先创建活动,该活动将用于通知用户想要删除图像的主要活动:
public class DeleteProfileImageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent resultIntent = new Intent();
resultIntent.putExtra("remove_image", true);
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
}
您可以在清单中指定图标和标签。确保您还将主题设置为NoDisplay,以避免它使用意图选择器覆盖实际活动。
<activity
android:name=".activity.profilesetup.DeleteProfileImageActivity"
android:label="@string/title_activity_delete_profile_image"
android:icon="@drawable/ic_delete_image_red"
android:theme="@android:style/Theme.NoDisplay"
/>
然后您可以将其添加到意图选择器中。我检查图像是否先前已设置,以避免在没有图像时添加选项。
if (imageSet) {
Intent removeImageIntent = new Intent(activity, DeleteProfileImageActivity.class);
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] {removeImageIntent} );
}
然后,您可以使用DeleteProfileImageActivity
中指定的密钥侦听目标数据的活动结果,当前为remove_image
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data.hasExtra("remove_image") && imageSet) {
// remove/reset the image here
}
}
答案 1 :(得分:0)
您必须创建警报对话框。在那里,您可以选择,并在其中添加删除选项。在删除选项时使用此:
else if (options[item].equals("Remove")) {
ImageView.setImageDrawable(null);
dialog.dismiss();
}
如需更多帮助,请参阅http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample/