得到的EditText整数值 [英] Get integer value from edittext

查看:130
本文介绍了得到的EditText整数值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试运行code以下,我的程序有止损。我想这code,以获得的EditText 但it's不工作,我期待它的价值。我究竟做错了什么?

 公共类MainActivity延伸活动{

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);

    按钮和=(按钮)findViewById(R.id.button1);
    按钮取消=(按钮)findViewById(R.id.button2);

    最后的EditText从=(EditText上)findViewById(R.id.editText1);
    最后的EditText高达=(EditText上)findViewById(R.id.editText2);
    最后的EditText runsum =(EditText上)findViewById(R.id.editText3);

    最终诠释F =的Integer.parseInt(from.getText()的toString());
    最终诠释U =的Integer.parseInt(upto.getText()的toString());

}

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        。getMenuInflater()膨胀(R.menu.activity_main,菜单);
        返回true;
    }
}
 

下面是我的LogCat中遗憾的烂摊子:/

  08-28 19:34:44.241:E /跟踪(334​​6):错误打开跟踪文件:没有这样的文件或目录(2)
08-28 19:34:44.780:D / AndroidRuntime(3346):关闭虚拟机
08-28 19:34:44.780:W / dalvikvm(3346):主题ID = 1:螺纹退出与未捕获的异常(组= 0x40a13300)
08-28 19:34:44.790:E / AndroidRuntime(3346):致命异常:主要
08-28 19:34:44.790:E / AndroidRuntime(3346):java.lang.RuntimeException的:无法启动的活动ComponentInfo {com.example.project / com.example.project.MainActivity}:java.lang.NumberFormatException:无效INT:
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread.access $ 600(ActivityThread.java:130)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1195)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.os.Handler.dispatchMessage(Handler.java:99)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.os.Looper.loop(Looper.java:137)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread.main(ActivityThread.java:4745)
08-28 19:34:44.790:E / AndroidRuntime(3346):在java.lang.reflect.Method.invokeNative(本机方法)
08-28 19:34:44.790:E / AndroidRuntime(3346):在java.lang.reflect.Method.invoke(Method.java:511)
08-28 19:34:44.790:E / AndroidRuntime(3346):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
08-28 19:34:44.790:E / AndroidRuntime(3346):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-28 19:34:44.790:E / AndroidRuntime(3346):在dalvik.system.NativeStart.main(本机方法)
08-28 19:34:44.790:E / AndroidRuntime(3346):由:java.lang.NumberFormatException:无效INT:
08-28 19:34:44.790:E / AndroidRuntime(3346):在java.lang.Integer.invalidInt(Integer.java:138)
08-28 19:34:44.790:E / AndroidRuntime(3346):在java.lang.Integer.parseInt(Integer.java:359)
08-28 19:34:44.790:E / AndroidRuntime(3346):在java.lang.Integer.parseInt(Integer.java:332)
08-28 19:34:44.790:E / AndroidRuntime(3346):在com.example.project.MainActivity.onCreate(MainActivity.java:25)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.Activity.performCreate(Activity.java:5008)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
08-28 19:34:44.790:E / AndroidRuntime(3346):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
08-28 19:34:44.790:E / AndroidRuntime(3346):11 ...更多
08-28 19:35:10.560:E /跟踪(3394):错误打开跟踪文件:没有这样的文件或目录(2)
08-28 19:35:11.629:D / gralloc_goldfish(3394):没有GPU的仿真模拟器检测。
08-28 19:48:19.295:I /编舞(3394):跳过41帧!该应用程序可能会做它的主线程的工作太多了。
 

解决方案

这个问题似乎是,当活动被bringed到山前必有的的EditText 没有任何价值。整数解析器不知道如何解析空字符串,那么抛出异常。

您需要在解析之前检查现有的的EditText 文本

 最终诠释F = -1; //或其他无效值
如果(from.getText()的toString()长度()> 0)
    F =的Integer.parseInt(from.getText()的toString());
 

同样,对于其他的EditText

When I try to run the code below, my program has stops. I want this code to get the value from edittext but it´s not working as I expected it. What am I doing wrong?

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

Here is my LogCat sorry for mess :/

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.

解决方案

The problem seems that when Activity is bringed to front there is no value in EditText. Integer parser don't know how to parse empty String, so Exception is thrown.

You need to check for existing of text in that EditText before parsing

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

Similarly for other EditText

这篇关于得到的EditText整数值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆