现在我使用switch-case
func uploadScans(parameters: [String: AnyObject], completionHandler: (AnyObject?, NSError?) -> ()) {
makePostCall(CommonFunctions().getSaveSKUDataUrl(), parameters: parameters,completionHandler: completionHandler)
}
func makePostCall(url: String, parameters: [String: AnyObject], completionHandler: (AnyObject?, NSError?) -> ()) {
Alamofire.request(.POST, url, parameters: parameters)
.responseJSON { response in
switch response.result {
case .Success(let value):
completionHandler(value, nil)
case .Failure(let error):
completionHandler(nil, error)
}
}
}
uploadScans(params) { responseObject, error in
let json = JSON(responseObject!)
}
有时我会点击第一个单选按钮,我也会立即点击第二个单选按钮。
在case块中,我将intent传递给Service类,该类与Web服务对话并为ListView更新arrayAdapter。
由于我快速单击两个单选按钮,因此UI会获得两种语言的结果(案例块)。 1)如何避免这种情况? 2)在这些问题中使用switch case代替if-else是否很重要?
答案 0 :(得分:1)
收到onCheckedChanged事件后,禁用单选按钮
答案 1 :(得分:1)
这完全取决于您的UI。在" onCheckedChanged"之后禁用单选按钮。叫也不正确。因为在选择一种语言后,用户可能想要更改选择,因此您应该在UI中提供确认组件。
如果我们为您的方案使用switch case或if-else,这里有什么区别。
答案 2 :(得分:0)
我可能误解了你在做什么,但假设你正在启动并展示当前的活动,你可以在开始新活动后致电finish()
。
否则,您可以声明boolean
字段shouldHandleCheckChanged
或其他内容,以跟踪是否处理onCheckChanged()
中的任何案例。您可以在开始新活动后立即将值设置为false,然后在收到您期望的任何更新后将其设置为true。
答案 3 :(得分:0)
你可以做这样的事情,在你的活动类中创建一个布尔字段:
Private isLoadingNewActivity = false;
在你的onResume中将其设为false:
isLoadingNewActivity = false;
在你的听众中检查它:
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup group, int checkedId) {
If(isLoadingNewActivity)
return;
switch(checkedId){
case R.id.Eng:
// do operations specific to this selection
setLocale("en_US");
Intent intentEng = new Intent(getActivity(), Some.class);
startActivity(intentEng);
isLoadingNewActivity = true;
break;
case R.id.French:
// do operations specific to this selection
setLocale("fr");
Intent intent = new Intent(getActivity(), Some.class);
startActivity(intent);
isLoadingNewActivity = true;
break;
}
}
});