2012-10-14 73 views
1

整數值,當我嘗試運行,下面的代碼,我的程序有停止。我想要這個代碼從edittext得到值,但它不像我預期的那樣工作。我究竟做錯了什麼?獲取從EditText上

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

這裏是我的logcat抱歉混亂:/

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. 
+2

是它拋出一個錯誤,這是什麼意思:「我不能讓它」?如果你有錯誤,你應該發佈你的logcat – MikeIsrael

+0

你想從哪裏獲得editText? R是什麼樣的對象?它會覆蓋很多其他代碼或至少缺少一些補充。 –

回答

3

這個問題似乎是,當活動被bringed到前面有在EditText沒有價值。整數解析器不知道如何解析空字符串,所以拋出異常。

您需要檢查在EditText現有文本的解析

final int f = -1; // or other invalid value 
if (from.getText().toString().length() > 0) 
    f = Integer.parseInt(from.getText().toString()); 

同樣,對於其他EditText

+0

這可能會有所幫助。我現在正在嘗試感謝所有的幫助。 – theduman

1

之前,你可以從你的logcat的看到:

08-28 19 :34:44.790:E/AndroidRuntime(3346):引起:java.lang.NumberFormatException:無效int:「」

有一個空輸入,無法轉換爲int

嘗試驗證用戶輸入。

1

-請檢查EditText值,是一個有效的integer值或不

試試這個代碼:

int i = 0; 

try{ 

    i = Integer.parseInt(from.getText().toString()); 

}catch(NumberFormatException ex){ 

    System.out.println("Value at TextView is not a valid integer"); 

} 
+0

如果'EditText'沒有長度限制或類似的東西,這是正確的方法。其他解決方案通常會引發異常並使應用程序崩潰。 – Gimali