Akrina Akram
Akrina Akram

Reputation: 21

how to get number input type from edittext android studio

I have problem here,my java code is

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

And my xml code is

android. InputType="number"

But i am still getting error saying that "invalid int =""" Can anyone help me..i really really need help right now.

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


   }

Upvotes: 0

Views: 15430

Answers (3)

Sumit
Sumit

Reputation: 138

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

Upvotes: 0

Sumit
Sumit

Reputation: 138

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" />

Upvotes: 0

Vinesh Chauhan
Vinesh Chauhan

Reputation: 1378

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. So Activity Throw error For invalid Int so you need to add any 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.

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

Upvotes: 1

Related Questions