【问题标题】:How to set a Toast inside Ksoap Exception如何在 Ksoap Exception 中设置 Toast
【发布时间】:2014-06-22 20:19:02
【问题描述】:

当 Ksoap 收到 IOexception 或 XmlPullParserException 异常时,我正在尝试设置 Toast。我正在尝试在 EXCEPTION 中使用此代码,但我无法显示 toast.. 我想这是因为应用程序崩溃了,没有时间显示 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;

}
    }

我也在 E​​XCEPTION 中尝试过这段代码,但还是不行

    activity.runOnUiThread(new Runnable() {
    public void run() {
    Toast.makeText(activity, "ERROR", Toast.LENGTH_SHORT).show();
    }
    });

【问题讨论】:

    标签: android exception ksoap


    【解决方案1】:

    runOnUiThread 应该已经完成​​了任务。

    您还可以尝试一件事。

    在您的活动中声明一个处理程序并将其传递给此函数。

    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();
    
    }
    
    ...
    

    }

    【讨论】:

    • 关于问题,这是正确的活动......因为如果是这种情况,那么您正在尝试阻止结果RequestSOAP = (Object)envelope.getResponse(); 上的 UI 线程;这个电话。您能否发布此流程的完整代码?
    • 代码已更新,是的,这是一项活动。我不确定,但我想麻烦在于尝试传递上下文时。所以你说“resultsRequestSOAP”阻塞了UI线程?实际上我在“transporte.call(SOAP_ACTION_SESSION,信封);”上遇到了一个异常,只是在连接错误时测试连接请求,所以我正在尝试当对该 Web 服务的请求错误时,处理显示带有特定文本的 toast 的异常...
    • 此代码中传递给的活动是什么:Toast.makeText(activity, "ERROR", Toast.LENGTH_SHORT).show();
    • 哦,好吧,这个剪断的代码是我使用的可能的解决方案,在我更新的代码中,我使用的活动是 RequestWS();,主要活动..所以我使用:“RequestWS. this.runOnUiThread..."
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多