2016-07-24 20 views
1

私は現在、AlertDialogsで作業しようとしています。ボタンの押下方法は?

現在のところ、AlertDialogにEditTextがあり、入力をIntegersのみに制限したいとします。私はNumberFormatExceptionフォームのクラッシュを避けるために、基本的なtryとcatchブロックを使用しました。

しかし、ユーザーが間違った入力でボタンを押すと入力が登録されず、ダイアログがキャンセルされないように設定したいと考えています。

UpperLimitDialog.setPositiveButton(R.string.Positive_Button, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int i) { 
         int RawInput = settings.getInt("UpperLimit", 12); 
         try { 
          RawInput = Integer.parseInt(input.getText().toString()); 
         }catch (NumberFormatException se) { 
          Toast.makeText(SettingsMenu.this, "Non-Integer Value, No Input", Toast.LENGTH_SHORT).show(); 
         //Here I want the app to not register the click and prevent the dialog box from closing. 
         } 
         editor.putInt("UpperLimit", RawInput); 
         editor.apply(); 
         Toast.makeText(SettingsMenu.this, "Set Upper Limit to " + RawInput, Toast.LENGTH_SHORT).show(); 
        } 
       }); 

これを行うにはどのような方法がありますか?

+0

を試してみてください文字列値 –

+0

私はカスタムXMLを使わずにそれを掻き集めることができたと思った。しかし、私はそうではないと思います。 –

+0

これまでのところあなたがリノスの答えを試して、それが数字入力までの間に警告ダイアログを保つことができるようにしたい –

答えて

0

は単にのEditTextのXMLコードで使用します。

android:inputType="numberSigned" 

これは、ユーザーの入力整数のみをできるようになります。お役に立てれば!

2

使用すると、JavaやXMLの両方でinput to only Integersこれをacheiveすることができます。

のJava

editText.setInputType(InputType.TYPE_CLASS_NUMBER); 

XML

android:inputType = "numberSigned" 

この5月には、両方の方法であなたを助けます。

1

あなただけの数を許可するユーザーを制限するなら、あなたは単に

アンドロイドwith-試すことができます:inputTypeは=「数」

、あなたが浮動数でできるようにしたい場合は、その後でみてください -

アンドロイド:inputType = "numberDecimal"

とダイアログのボタンを無効にしたい場合はどのような場合には、その後this-

Button theButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
theButton.setEnabled(false); 

はあなたのために動作します:)

あなたがチェックする必要がいけないので、番号として使用したXML入力タイプを使用してはいけない理由
関連する問題