2016-07-24 37 views
1

Ich versuche derzeit mit AlertDialogs zu arbeiten.Wie 'Abbrechen' einer Taste drücken?

Momentan habe ich einen EditText in meinem AlertDialog und möchte die Eingabe nur auf Integer beschränken. Ich habe einen einfachen Versuchs- und Catch-Block verwendet, um zu verhindern, dass die App von NumberFormatException abstürzt.

Ich möchte jedoch einrichten, dass, wenn der Benutzer versucht, die Schaltfläche mit der falschen Eingabe zu drücken, die Eingabe nicht registriert und der Dialog nicht abgebrochen wird.

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(); 
        } 
       }); 

Mit welcher Methode kann ich das erreichen?

+0

warum nicht Gebrauch xml Eingabetyp als Zahl verwenden, so dass Sie nicht brauchen, um zu überprüfen Dialog-Schaltfläche und dann versuchen, deaktivieren möchten für ein String-Wert –

+0

Ich dachte, ich könnte es einfach kratzen, ohne eine benutzerdefinierte XML zu verwenden. Aber schätze ich nicht, besser zurück zur Verwendung von XMLs dann. –

+0

es ist an Ihnen. Wenn Sie möchten, können Sie versuchen, Linos Antwort und behalten Sie den Warnungsdialog wie es ist, bis es eine Nummer Eingabe ist –

Antwort

0

Verwenden Sie einfach in EditText XML-Code:

android:inputType="numberSigned" 

Dies wird eine Benutzereingabe nur ganze Zahlen lassen. Hoffe das hilft!

2

Verwendung kann input to only Integers diese sowohl von Java oder XML acheive.

Java

editText.setInputType(InputType.TYPE_CLASS_NUMBER); 

XML

android:inputType = "numberSigned" 

kann dies hilft Ihnen, sowohl in Art und Weise.

1

Wenn Sie Benutzer einschränken nur Nummer erlauben, dann können Sie einfach mit-

android versuchen: input = „number“

und wenn Sie mit Gleitzahl zulassen wollen dann versuchen, mit -

android: input = "numberDecimal"

und in jedem Fall, wenn Sie this-

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

für Sie arbeiten wird :)