[英]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.