我真的很新的Android,我需要我的应用程序将我当前的坐标发送到我的webapp,为了实现这一点,我做了一个新的线程,但线程没有做任何事情。魔术是在SendQueryString()函数中发生的。 我的代码是:
@Override
public void onLocationChanged(Location location) {
// Draw the marker, if destination location is not set
latitude = location.getLatitude();
longitude = location.getLongitude();
if (mMarkerPoints.size() < 2) {
mLatitude = location.getLatitude();
mLongitude = location.getLongitude();
LatLng point = new LatLng(mLatitude, mLongitude);
mGoogleMap.moveCamera(CameraUpdateFactory.newLatLng(point));
mGoogleMap.animateCamera(CameraUpdateFactory.zoomTo(18));
drawMarker(point);
}
String Text = "My current Latitude = " + latitude + " Longitude = "
+ longitude;
Thread trd = new Thread(new Runnable() {
@Override
public void run() {
try {
SendQueryString();
} catch (Throwable e) {
e.printStackTrace();
}
}
});
trd.start();
}
public void SendQueryString() {
String url = "http://sistemamedicointegrado.azurewebsites.net/Home/Ubicacion?latitud="
+ latitude + "&longitud=" + longitude + "&id=4";
try {
HttpClient Client = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
Client.execute(httpget);
} catch (Exception ex) {
}
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
答案 0 :(得分:0)
在线程中显示Toast不起作用。 Ui只能在ui线程上更新。
你有
SendQueryString();
在Threads中运行方法
然后在SendQueryString()
中显示
Toast.makeText(getApplicationContext(), "YESS",
Toast.LENGTH_SHORT).show();
这是错误的。
您可以使用Thread
代替Asynctask
,而可以覆盖onPreExecute
,onPostExecute
和onProgressUpdate
并更新ui。您可以在doInBackground
。
答案 1 :(得分:0)
要在线程内显示toast意味着你必须使用runonUIThread
runOnUiThread(new Runnable(){ public void run(){
Toast.makeText(ActivityName.this,"YESS",Toast.LENGTH_LONG).show();
}
});
否则使用handler来设置消息并与主UI线程进行通信。例如
Inside thread use this code
h.sendEmptyMessage(0);
and then call this handleMessage method
Handler h = new Handler() {
public void handleMessage(Message msg){
if(msg.what == 0){
Toast.makeText(Activityname, "HelloWorld!", Toast.LENGTH_SHORT).show();
}
}
};