神奇的摩根。在此代码下方,从mysql
数据库获取数据并显示在EditText
元素中。使用此db
{{1从asyn tesk
获取数据的工作正常没有问题}}
问题
我想从new checkUserPermission().execute("");
进行一些计算,而在另一个code
中进行显示。所以我需要的值就是为什么我从Edittext
获取数据。而db
从OnCreate()
获取数据(其工作)。每当我调用这个db
方法时,我都无法获得价值。
logcat的:
calculatePL();
为什么它是空的或什么的。但是在我的
System.out: Empty Value
元素之上 值。
edittext
答案 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
的值或相同的对象。最后检查你声明它的位置。