无法从“编辑文本”元素中获取值

时间:2016-11-07 05:56:02

标签: android

神奇的摩根。在此代码下方,从mysql数据库获取数据并显示在EditText元素中。使用此db {{1从asyn tesk获取数据的工作正常没有问题}}

问题     我想从new checkUserPermission().execute("");进行一些计算,而在另一个code中进行显示。所以我需要的值就是为什么我从Edittext获取数据。而dbOnCreate()获取数据(其工作)。每当我调用这个db方法时,我都无法获得价值。

logcat的: calculatePL();

  

为什么它是空的或什么的。但是在我的System.out: Empty Value元素之上   值。

edittext

3 个答案:

答案 0 :(得分:1)

您的checkUserPermission在后​​台执行。并立即调用calculatePL(),因此您的主线程不会等待checkUserPermission执行完成。

您需要做的是,等待您的主线程,以便在完全执行checkUserPermission calculatePL()后调用。您可以通过添加ProgressDialog来实现此目的。在ProgressDialog中显示onPreExecute()并在onPostExecute()

中将其关闭

希望它能完成你的工作。

答案 1 :(得分:0)

覆盖asyncTask中的protected void onPostExecute并在此处调用calculatePl()。您也应该在Edittext中设置onPostExecute的文字,因为此方法是主要线索,您不需要使用runOnUIThread

使用示例代码进行编辑:

class checkUserPermission extends AsyncTask<String, String, String> {

        private ProgressDialog Dialog = new ProgressDialog(Five_Activity.this);

        @Override
        protected void onPreExecute() {
            Dialog.setMessage("Please wait..");
            Dialog.show();
            super.onPreExecute();
            userid = (TextView)findViewById(R.id.userID);
            uid = userid.getText().toString();
            System.out.println(uid);
        }

        @Override
        protected String doInBackground(String... arg0) {
            ArrayList<NameValuePair> values = new ArrayList<NameValuePair>();

            values.add(new BasicNameValuePair("userid", uid));

            try {
                DefaultHttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost("http://192.168.1.13:8090/stat_api/shiftClose.php");
                httppost.setEntity(new UrlEncodedFormEntity(values));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                is2 = entity.getContent();
                Log.i("TAG", "Connection Successful");

            } catch (Exception e) {
                Log.i("TAG", e.toString());
                //Invalid Address
            }

            try {
                BufferedReader reader2 = new BufferedReader(new InputStreamReader(is2, "iso-8859-1"), 8);
                StringBuilder sb2 = new StringBuilder();
                while ((line2 = reader2.readLine()) != null) {
                    sb2.append(line2 + "\n");
                }
                is2.close();
                result2 = sb2.toString();

                JSONObject json_data2 = new JSONObject(result2);
                code2=(json_data2.getString("code"));

                Allvalues = code2;


            } catch (Exception e) {
                Log.i("TAG", e.toString());
                e.printStackTrace();
            }
            return Allvalues;
        }
        protected void onPostExecute(String result){

            String[] splited = result.split("\\s+");

            Totalkm=splited[0];
            discountamt=splited[1];
            receviedamt=splited[2];
            totalamt=splited[3];
            expen=splited[4];


            totkm.setText(Totalkm);
            discount.setText(discountamt);
            recamt.setText(receviedamt);
            totamt.setText(totalamt);
            expenses.setText(expen);
            // Close progress dialog
            Dialog.dismiss();
            calculatePL();
        }
    }

答案 2 :(得分:-1)

确保将totamt声明为全局。尝试记录$('.new').find('.tr').length!=0的值或相同的对象。最后检查你声明它的位置。