アクティビティにフォームがあり、フィールドが2番目のクラス(BLLクラス)で検証されており、setError()メソッドを使用して検証メッセージを表示しています。それまではうまくいきます。
しかし今、私はこのフォームをフラグメントアクティビティに配置する必要があります。必要なすべての変更を行い、検証は正常に機能しますが、「バルーン」は表示されません。
私はどこでも検索しましたが、役立つものは見つかりませんでした。
これが私のコードです:
public class OrderCustomFieldsFragment extends Fragment {
public void save() {
try {
CustomFieldsBll customFields = new CustomFieldsBll(this.getActivity());
customFields.validateCustomFields(irrelevant...);
...irrelevant code...
Toast.makeText(this.getActivity(), "Saved.", Toast.LENGTH_LONG).show();
}
catch (CustomException z) {
if (setError(z.getThrowerField(), z.getMessage()))
Toast.makeText(this.getActivity(), z.getMessage(), Toast.LENGTH_SHORT).show();
}
}
private boolean setError(Integer throwerField, String msg) {
//If thorwerField is null then is a general error, otherwise is a form field
if (throwerField == null) {
//here display an dialog
showOKMessage(this.getActivity(), "Pedidos", msg, false);
return false;
}
else {
try {
//linearLayout is my view, instanciated in onCreateView method
TextView customField = (TextView)linearLayout.findViewById(throwerField);
if (customField != null) {
customField.setError(msg);
customField.requestFocus();
return true;
}
else {
showOKMessage(this.getActivity(), "Pedidos", msg, false);
}
}
catch (Exception e) {
showOKMessage(this.getActivity(), "Pedidos", msg, false);
}
}
return false;
}
}
例外がスローされ、フィールドが検出され、エラーが設定されますが、トーストのみが表示され、エラーバルーンは表示されません。アイデアはありますか?ありがとう