Исключение формата номера в обслуживании - PullRequest
0 голосов
/ 18 октября 2018

Код

    final EditText wid = (EditText) myview.findViewById(R.id.width);
    final EditText hie = (EditText) myview.findViewById(R.id.height);
    Button mSave = (Button) myview.findViewById(R.id.save);
    Button mCancel = (Button) myview.findViewById(R.id.cancel);

    final String mWidth = wid.getText().toString();
    final String mHeight = hie.getText().toString();

    mSave.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Integer.parseInt(mWidth)>= 500 && Integer.parseInt(mWidth) <= 1000 &&
                    Integer.parseInt(mHeight) >= 500 && Integer.parseInt(mHeight) <= 1500) {
                Intent intent = new Intent(ResizeService.this, UsersService.class);
                intent.putExtra("Width", mWidth);
                intent.putExtra("Height", mHeight);
                startService(intent);
            } else {
                Toast.makeText(getApplicationContext(), "Check whether the data you entered matches the requirements", Toast.LENGTH_LONG).show();
            }
        }
    });

Введенные числа являются целыми числами без десятичной дроби.Но все равно получаю ошибку

java.lang.NumberFormatException: недопустимое значение int: "" в java.lang.Integer.invalidInt (Integer.java:138) в java.lang.Integer.parseInt (целое число.Java: 358) в java.lang.Integer.parseInt (Integer.java:334) в com.appmaster.akash.messageplus.Services.ResizeService $ 1.onClick (ResizeService.java:57) в android.view.View.performClick (View.java:5215) на android.view.View $ PerformClick.run (View.java:21193) на android.os.Handler.handleCallback (Handler.java:742) на android.os.Handler.dispatchMessage (Handler.java): 95) на android.os.Looper.loop (Looper.java:157) на android.app.ActivityThread.main (ActivityThread.java:5571) на java.lang.reflect.Method.invoke (собственный метод) на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:745) в com.android.internal.os.ZygoteInit.main (ZygoteInit.java:635)

editTexts aren 'либо пусто ... я набираю цифры, но все равно получаю сообщение об ошибке

Кстати, это в службе ... Error находится в строке оператора if

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

попробуйте переместить

final String mWidth = wid.getText().toString();
final String mHeight = hie.getText().toString();

внутри щелчка.таким образом вы получаете значения при нажатии, а не при запуске.

0 голосов
/ 18 октября 2018

Вместо того, чтобы делать

    final String mWidth = wid.getText().toString();
    final String mHeight = hie.getText().toString();

, я бы сделал

    final int mWidth = wid.getText();
    final int mHeight = hie.getText();

А в xml я бы установил inputType EditText только на цифры.

А затем удалите Integer.parseInt и просто поместите его в свой onClick, поскольку вы нажимаете кнопку, чтобы получить значения внутри EditText, если вы пытаетесь получить значения раньше, ваши переменные mWidth и mHeightвернет ноль, так как внутри них ничего нет, прежде чем вы нажмете свою кнопку.

...