doInBackground не устанавливает значение строки при первом нажатии кнопки, но выполняет второй щелчок - PullRequest
0 голосов
/ 10 марта 2020

Почему мой asynctask не выполняется при первом нажатии кнопки, но выполняется при втором нажатии

@SuppressLint("StaticFieldLeak")
    class Asynctask_kwh_used extends AsyncTask<Void, Void, Void>
    {
        @Override
        protected Void doInBackground(Void... voids) {
            db = new DatabaseHelper(getApplicationContext());
            sqLiteDatabase = db.getReadableDatabase();
            Cursor cursor1 = sqLiteDatabase.rawQuery("SELECT '"+ etext1.getText().toString() +"' - last_record * "+Multiplier+" FROM Consumer WHERE account_no = '" + account_no.getText().toString() + "'", null);
            while (cursor1.moveToNext())
            {
                s1= cursor1.getString(0);
            }
            cursor1.close();
            return null;
        }
    }

Log Кажется, что doInbackground выполняется после моего оператора if, но Перед этим я ставлю асинхронный метод

W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
W/System.err:     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1838)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
W/System.err:     at java.lang.Double.parseDouble(Double.java:539)
        at com.vicjames.qiimeterreader.ManageReading$6$1.run(ManageReading.java:360)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
        at java.lang.Thread.run(Thread.java:764)
D/Surface: lockCanvas
D/Surface: lockCanvas
V/TAG: doInbackground

Он указывает на эту строку

if (Double.parseDouble(s1) > (Double.parseDouble(s2) * 1.5) || Double.parseDouble(s1) < 0)

...