0

私の Android アプリケーションでは、「IntEditTextPreference」というクラスを使用しています。このクラスは、ユーザーに設定を整数として導入してもらいたい場合に使用します。

しかし、それには問題があります。ユーザーがフィールドを空のままにして「OK」を押すと、NumberFormatException がスローされます。

フィールドが空のときにユーザーが「OK」を押さないようにするにはどうすればよいですか?

ありがとう!

public class IntEditTextPreference extends EditTextPreference
{

   public IntEditTextPreference(Context context)
   {
           super(context);
   }

   public IntEditTextPreference(Context context, AttributeSet attrs)
   {
       super(context, attrs);
   }

   public IntEditTextPreference(Context context, AttributeSet attrs, int defStyle)
   {
       super(context, attrs, defStyle);
   }

   @Override
   protected String getPersistedString(String defaultReturnValue)
   {
        return String.valueOf(getPersistedInt(-1));
   }

   @Override
   protected boolean persistString(String value)
   {
       return persistInt(Integer.valueOf(value));
   }

}

4

2 に答える 2

0

一般に、ブラウザ ベースのアプリケーションを使用している場合、JavaScript/AJAXを使用して、入力が有効な場合にボタンを表示します。これはすでにクライアント側で処理されています。これを避けるには、ステートメントの周りに --block をNumberFormatException,追加するだけtryです。catchInteger.valueOf(value)

基本的に、クライアントフレームワークに依存します。フレームワーク固有のより良い解決策があるかもしれません。どちらを使用しますか?

于 2012-12-10T13:37:30.830 に答える
0

おそらく、その周りに try/catch ブロックを配置して catch を実行する必要がありますNumberFormatException。しかし、これを行うには多くの方法があります。1 つの方法は、buttonssetClickableメソッドを使用してfalse、テキストが null ではなく、 を使用して整数である場合に true にすることですonTextChangedListener。または、単純にクリック可能にすることもできますが、ボタンがクリックされたときに空の文字列または非整数をチェックし、警告メッセージ toast/alert/label を使用して、ボタンが他の操作を実行できるようにする前に、フィールドが正しくないことをユーザーに知らせます。お役に立てれば!

于 2012-12-10T16:11:32.297 に答える