我有这段代码,但没有按预期工作:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_feedback: {
try {
Intent intent_email = new Intent(Intent.ACTION_SEND);
intent_email.putExtra(Intent.EXTRA_EMAIL, new String[]{"feedback@xyz.com"});
intent_email.putExtra(Intent.EXTRA_SUBJECT, "Feedback");
intent_email.setType("message/rfc822");
startActivity(intent_email);
return true;
} catch (Exception e) {
Toast.makeText(getBaseContext(), "No Mail app found", Toast.LENGTH_SHORT).show();
}
}
case R.id.action_rate: {
try {
startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + getPackageName())));
} catch (android.content.ActivityNotFoundException e) {
Toast.makeText(getBaseContext(), "No Market app found", Toast.LENGTH_SHORT).show();
}
return true;
}
}
return super.onOptionsItemSelected(item);
}
此代码存在的问题是,当case R.id.action_rate:
中存在异常时,它会将Toast显示为找不到市场应用,但当异常位于case R.id.action_feedback:
时,它会显示两个Toasts,首先找不到邮件应用&然后找不到市场应用。意味着它进入两个捕获块。任何人都可以解释它是如何工作的?
然而,我通过在try
语句之前放置switch
块并在switch
语句关闭后放置catch块,使我的代码工作。但我仍然不知道这是怎么回事?
提前致谢:)
答案 0 :(得分:0)
你并没有突破每一个案例。 尝试使用"休息"在每个案件之后。
答案 1 :(得分:0)
您应该始终在每种情况下添加public class FolderDirectoryStructure
{
public string ChildFolder {get; set;}
public List<FileExtension> Extension {get; set;}
}
答案 2 :(得分:0)
你必须在第一个阻挡之后放一个break;
。您可能还需要修改退货声明。