当Ksoap在IOexception或XmlPullParserException上获得异常时,我试图设置Toast。我正在尝试在EXCEPTION中使用此代码,但我无法显示toast..我猜这是因为应用程序崩溃了,没有时间显示吐司,但我不确定…需要帮助!提前感谢:
public class RequestWS extends Activity {
private static final String NAMESPACE = "-------";
private static String URL="http://-------";
private static final String METHOD_NAME_SYNCHROAP = "-----";
private static final String SOAP_ACTION_SYNCHROAP = "-----";
private SoapObject request=null;
private SoapSerializationEnvelope envelope=null;
private Object resultsRequestSOAP=null;
public String requestSession() {
request = new SoapObject(NAMESPACE, METHOD_NAME_SESSION);
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE transporte = new HttpTransportSE(URL);
try {
transporte.call(SOAP_ACTION_SESSION, envelope);
resultsRequestSOAP = (Object)envelope.getResponse();
} catch (IOException e) {
RequestWS.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity, "ERROR", Toast.LENGTH_SHORT).show();
}
});
e.printStackTrace();
} catch (XmlPullParserException e) {
// NEED THE CORRECT CODE HERE
Toast.makeText(this, "ERROR", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
String strJSON = resultsRequestSOAP.toString();
return strJSON;
}
}
我也在EXCEPTION中尝试了这个代码,但仍然不能工作
activity.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(activity, "ERROR", Toast.LENGTH_SHORT).show();
}
});
runonuthread应该完成这个任务。
还有一件事你可以试试。
在activity中声明一个Handler并传递给这个函数。
public String requestSession(final Handler handler) {
...
} catch (IOException e) {
// NEED THE CORRECT CODE HERE'
handler.post(new Runnable(){
Toast.makeText(this, "ERROR", Toast.LENGTH_LONG).show();
});
e.printStackTrace();
} catch (XmlPullParserException e) {
// NEED THE CORRECT CODE HERE
handler.post(new Runnable(){
Toast.makeText(this, "ERROR", Toast.LENGTH_LONG).show();
});
e.printStackTrace();
}
...
}