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

时间:2015-08-23 16:37:54

标签: java android

我正在创建一个简单的应用程序,允许用户使用dispatchTakePictureIntent()拍摄照片,以保存完整尺寸的照片;这里指出; http://developer.android.com/training/camera/photobasics.html#TaskCaptureIntent。并使用操作栏中的“相机”图标启动。然后用户按下照片,并且他们的照片出现在使用扩展BaseAdapter

的类创建的列表中
public boolean onOptionsItemSelected(MenuItem item) {
    if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
        dispatchTakePictureIntent();
    }
    return super.onOptionsItemSelected(item);
}

如果我按上述方式启动意图,那么一切似乎都运行正常,但我没有对全部删除按钮的响应(点击它只会启动相机意图)

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);
}

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

生命周期中是否有任何微妙的变化或由此差异引入的任何内容?因为我正在努力寻找它如何导致这种不同的行为。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:0)

你在案件结束后错过了一个中断或返回语句,因此它会启动意图,然后删除你以前的所有照片,因为如果没有告诉他们中断案例陈述,那么这些照片将会传到下一张照片。

尝试:

switch(item.getItemId()) {
    case R.id.action_photo:
        ...
        break;
    case R.id.action_delete:
        ...
        break;
}