Java 具有多个菜单项的操作栏启动意图行为

Java 具有多个菜单项的操作栏启动意图行为,java,android,Java,Android,我正在制作一个简单的应用程序,允许用户使用保存全尺寸照片的DispatchTakePictureContent()拍摄照片;此处指出。并使用动作栏中的相机图标启动。然后用户按ok拍照,他们的照片显示在使用类扩展BaseAdapter创建的列表中 public boolean onOptionsItemSelected(MenuItem item) { if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMER

我正在制作一个简单的应用程序,允许用户使用保存全尺寸照片的DispatchTakePictureContent()拍摄照片;此处指出。并使用动作栏中的相机图标启动。然后用户按ok拍照,他们的照片显示在使用类扩展BaseAdapter创建的列表中

public boolean onOptionsItemSelected(MenuItem item) {
    if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        dispatchTakePictureIntent();
    }
    return super.onOptionsItemSelected(item);
}
如果我像上面那样启动intent,那么一切似乎都正常,但我对delete all(删除所有)按钮没有响应(单击它会启动相机intent)

然而,当像这样设置时,我可以删除照片,但每次单击相机图标拍摄新照片时,以前拍摄的照片都会消失

生命周期中是否有任何细微的变化,或者由这种差异引起的任何变化?我正在努力寻找它是如何导致这种不同行为的


谢谢你的意见

您的案例后缺少中断或返回语句,因此它会启动intent,然后删除您以前的所有照片,因为如果没有被告知中断,案例语句会转到下一张照片

尝试:


在你的案例之后,你丢失了一个break或return语句,因此它会启动intent,然后删除你以前的所有照片,因为如果没有被告知要break,案例语句会自动转到下一张

尝试:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_photo : {
            if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
                dispatchTakePictureIntent();
            }
        }
        case (R.id.action_delete) : {
            deleteAllPhotos();
        }
    }
    return super.onOptionsItemSelected(item);
}
switch(item.getItemId()) {
    case R.id.action_photo:
        ...
        break;
    case R.id.action_delete:
        ...
        break;
}