Obtenir la valeur entière de edittext
Lorsque j'essaie d'exécuter le code ci-dessous, mon programme s'arrête. Je veux que ce code pour obtenir la valeur de edittext
mais sa ne fonctionne pas comme je m'y attendais. Ce que je fais mal?
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button sum = (Button) findViewById(R.id.button1);
Button cancel = (Button) findViewById(R.id.button2);
final EditText from = (EditText) findViewById(R.id.editText1);
final EditText upto = (EditText) findViewById(R.id.editText2);
final EditText runsum = (EditText) findViewById(R.id.editText3);
final int f = Integer.parseInt(from.getText().toString());
final int u = Integer.parseInt(upto.getText().toString());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Voici mon LogCat désolé pour le désordre :/
08-28 19:34:44.241: E/Trace(3346): error opening trace file: No such file or directory (2)
08-28 19:34:44.780: D/AndroidRuntime(3346): Shutting down VM
08-28 19:34:44.780: W/dalvikvm(3346): threadid=1: thread exiting with uncaught exception(group=0x40a13300)
08-28 19:34:44.790: E/AndroidRuntime(3346): FATAL EXCEPTION: main
08-28 19:34:44.790: E/AndroidRuntime(3346): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.project/com.example.project.MainActivity}: java.lang.NumberFormatException: Invalid int: ""
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.access$600(ActivityThread.java:130)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.os.Handler.dispatchMessage(Handler.java:99)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.os.Looper.loop(Looper.java:137)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.main(ActivityThread.java:4745)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.reflect.Method.invokeNative(Native Method)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.reflect.Method.invoke(Method.java:511)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-28 19:34:44.790: E/AndroidRuntime(3346): at dalvik.system.NativeStart.main(Native Method)
08-28 19:34:44.790: E/AndroidRuntime(3346): Caused by: java.lang.NumberFormatException: Invalid int: ""
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.invalidInt(Integer.java:138)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.parseInt(Integer.java:359)
08-28 19:34:44.790: E/AndroidRuntime(3346): at java.lang.Integer.parseInt(Integer.java:332)
08-28 19:34:44.790: E/AndroidRuntime(3346): at com.example.project.MainActivity.onCreate(MainActivity.java:25)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.Activity.performCreate(Activity.java:5008)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-28 19:34:44.790: E/AndroidRuntime(3346): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-28 19:34:44.790: E/AndroidRuntime(3346): ... 11 more
08-28 19:35:10.560: E/Trace(3394): error opening trace file: No such file or directory (2)
08-28 19:35:11.629: D/gralloc_goldfish(3394): Emulator without GPU emulation detected.
08-28 19:48:19.295: I/Choreographer(3394): Skipped 41 frames! The application may be doing too much work on its main thread.
- est-il de lancer une erreur, qu'est-ce à dire que "je ne pouvais pas le faire"? Si vous rencontrez des erreurs, vous devez poster votre logcat
- Où êtes-vous essayer d'obtenir de l'editText à partir de? De quel type d'objet est R? il semble beaucoup d'autres codes ou atleast quelques explenations sont manquants.
Vous devez vous connecter pour publier un commentaire.
Le problème semble que lorsque l'Activité est bringed à l'avant n'a aucune valeur
EditText
. Entier analyseur ne sais pas comment analyser une Chaîne vide, alors une Exception est levée.Vous devez vérifier s'il existe de texte dans cette
EditText
avant l'analyseDe même pour les autres
EditText
comme vous pouvez le voir à partir de votre Logcat:
il y avait une entrée vide qui n'a pas pu être convertie en une
int
.essayer de valider la saisie de l'utilisateur.
- Veuillez vérifier la valeur de
EditText
, est-il valideinteger
valeur ou pas.Essayer ce code:
EditText
n'ont pas de limite de longueur ou quelque chose comme ça. D'autres solutions sont souvent introduire l'exception et le plantage de l'application.