3

アクティビティにフォームがあり、フィールドが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;
  }

}

例外がスローされ、フィールドが検出され、エラーが設定されますが、トーストのみが表示され、エラーバルーンは表示されません。アイデアはありますか?ありがとう

4

0 に答える 0