简体   繁体   English

如何从edittext android studio获取数字输入类型

[英]how to get number input type from edittext android studio

I have problem here,my java code is我这里有问题,我的 java 代码是

int num = Integer.parseInt(mark.getText().toString());

And my xml code is我的 xml 代码是

android. InputType="number"

But i am still getting error saying that "invalid int =""" Can anyone help me..i really really need help right now.但我仍然收到错误消息,说"invalid int ="""谁能帮帮我..我现在真的很需要帮助。

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_adding_remove);
        parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout);

        final EditText mark = (EditText)findViewById(R.id.etMark);
        EditText j = (EditText)findViewById(R.id.etJam);
        TextView status = (TextView)findViewById(R.id.tVGred);
        TextView pn = (TextView)findViewById(R.id.tvPnm);



        double  pointer;
        String grade;

       int num = Integer.parseInt(mark.getText().toString());

        if (num >= 90 && num <= 100) {
            grade = "A+";
            pointer = 4.00;
            status.setText(grade);
        }
        else if (num >= 80 && num <= 89) {
            grade = "A";
            pointer = 4.00;
            status.setText(grade);
        }
        else if (num >= 75 && num <= 79) {
            grade = "A-";
            pointer = 3.67;
            status.setText(grade);
        }
        else if (num >= 70 && num <= 74) {
            grade = "B+";
            pointer = 3.33;
            status.setText(grade);

        }
         else if (num >= 65 && num <= 69) {
            grade = "B";
            pointer = 3.00;
            status.setText(grade);
        }
        else if (num >= 60 && num <= 64) {
            grade = "B-";
            pointer = 2.67;
            status.setText(grade);
        }
        else if (num >= 55 && num <= 59) {
            grade = "C+";
            pointer = 2.33;
            status.setText(grade);
        }
        else if (num >= 50 && num <= 54) {
            grade = "C";
            pointer = 2.00;
            status.setText(grade);
        }
        else if (num >= 47 && num <= 49) {
            grade = "C-";
            pointer = 1.67;
            status.setText(grade);
        }
        else if (num >= 44 && num <= 46) {
            grade = "D+";
            pointer = 1.33;
            status.setText(grade);
        }
        else if (num >= 40 && num <= 43) {
            grade = "D";
            pointer = 1.00;
            status.setText(grade);
        }
        else
        {
            grade = "F";
            pointer = 0.00;
            status.setText(grade);
        }


   }

Problem is with问题是

 int num = Integer.parseInt(mark.getText().toString());

Your code is try to get text From EDITTEXT But is contains "" when ActiVity Created.您的代码尝试从 EDITTEXT 获取文本,但在创建 Activity 时包含“”。 So Activity Throw error For invalid Int so you need to add any Button So Activity Get String When Button click Trigger. So Activity Throw error For invalid Int所以你需要添加任何Button So Activity Get String When Button click Trigger。 But If You dont want to use any Button Use Enter Key As Trigger to Change Focus and get String Fri EditText like this.但是,如果您不想使用任何按钮,请使用 Enter 键作为触发器来更改焦点并像这样获取 String Fri EditText。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.TextView;

public class Main2Activity extends AppCompatActivity {
    int num =0;
    EditText mark;
    EditText j;
    TextView status,pn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);


        mark = (EditText)findViewById(R.id.edt);
         j = (EditText)findViewById(R.id.jmark);
         status = (TextView)findViewById(R.id.txt);
         pn = (TextView)findViewById(R.id.txt1);


        final double[] pointer = new double[1];
        final String[] grade = new String[1];





        mark.setOnKeyListener(new View.OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if(KeyEvent.KEYCODE_ENTER == keyCode) {
                    j.requestFocus();
                    if(mark.getText().toString()!="")
                    num= Integer.parseInt(mark.getText().toString());
                    if (num >= 90 && num <= 100) {
                        grade[0] = "A+";
                        pointer[0] = 4.00;
                        status.setText(grade[0]);
                    }
                    else if (num >= 80 && num <= 89) {
                        grade[0] = "A";
                        pointer[0] = 4.00;
                        status.setText(grade[0]);
                    }
                    else if (num >= 75 && num <= 79) {
                        grade[0] = "A-";
                        pointer[0] = 3.67;
                        status.setText(grade[0]);
                    }
                    else if (num >= 70 && num <= 74) {
                        grade[0] = "B+";
                        pointer[0] = 3.33;
                        status.setText(grade[0]);

                    }
                    else if (num >= 65 && num <= 69) {
                        grade[0] = "B";
                        pointer[0] = 3.00;
                        status.setText(grade[0]);
                    }
                    else if (num >= 60 && num <= 64) {
                        grade[0] = "B-";
                        pointer[0] = 2.67;
                        status.setText(grade[0]);
                    }
                    else if (num >= 55 && num <= 59) {
                        grade[0] = "C+";
                        pointer[0] = 2.33;
                        status.setText(grade[0]);
                    }
                    else if (num >= 50 && num <= 54) {
                        grade[0] = "C";
                        pointer[0] = 2.00;
                        status.setText(grade[0]);
                    }
                    else if (num >= 47 && num <= 49) {
                        grade[0] = "C-";
                        pointer[0] = 1.67;
                        status.setText(grade[0]);
                    }
                    else if (num >= 44 && num <= 46) {
                        grade[0] = "D+";
                        pointer[0] = 1.33;
                        status.setText(grade[0]);
                    }
                    else if (num >= 40 && num <= 43) {
                        grade[0] = "D";
                        pointer[0] = 1.00;
                        status.setText(grade[0]);
                    }
                    else
                    {
                        grade[0] = "F";
                        pointer[0] = 0.00;
                        status.setText(grade[0]);
                    }

                    return true;
                }
                else
                {
                    return false;
                }

            }
        });
    }
}

Make Sure you added android:singleLine="true" i your xml file确保您在 xml 文件中添加了android:singleLine="true"

use this    
<EditText
                android:id="@+id/login_text_phone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:digits="0123456789"
                android:maxLength="10" />
try this 
int num = toInteger(mark.getText().toString());


    public static Integer toInteger(Object value) {
        if (value instanceof Integer) {
            return (Integer) value;
        } else if (value instanceof Number) {
            return ((Number) value).intValue();
        } else if (value instanceof String) {
            try {
                return (int) Double.parseDouble((String) value);
            } catch (NumberFormatException ignored) {
            }
        }
        return null;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM