Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android应用程序中处理AsynTask的结果_Android_Android Asynctask - Fatal编程技术网

在android应用程序中处理AsynTask的结果

在android应用程序中处理AsynTask的结果,android,android-asynctask,Android,Android Asynctask,我有一个android应用程序 我需要在一个单独的任务上执行一个代码,因为它会让我产生android.os.NetworkOnMainThreadException 这是我的代码: 任务: 这给了我两个问题: 1.课内活动: 我想将变量usuario return保存在ValidationThread.doInBackground中。但是我该怎么做呢 事实上,如果我只写:newvalidacionthread.executepars;它告诉我变量usu intent.putetrasuario,

我有一个android应用程序

我需要在一个单独的任务上执行一个代码,因为它会让我产生android.os.NetworkOnMainThreadException

这是我的代码:

任务:

这给了我两个问题:

1.课内活动:

我想将变量usuario return保存在ValidationThread.doInBackground中。但是我该怎么做呢

事实上,如果我只写:newvalidacionthread.executepars;它告诉我变量usu intent.putetrasuario,usu;尚未初始化

当代码位于主代码Usuario usu=new ValidacionThread.executepars中时;它说类型不匹配

在doInBackground line中,eclipse发出警告:
Varargs方法应该只重写或被其他Varargs方法重写,而不像ValidActionThread.doInBackgroundString[]和AsyncTask.doInBackgroundString…

因为这是异步任务,所以您需要为该数据创建一个返回方式。 我建议创建如下界面:

接口{ 公共无效的parseDataUsuario数据; }

并在活动课中实现它

然后,我将把活动的实例传递给构造函数中的那个异步任务

然后在ValidationThread中:

PostExecuteusuario vt上的受保护无效{ activityInstance.parseDatavt; }

至于第二部分,将String[]更改为String

 public class AccesoCuentaActivity extends Activity{
   public void validacion(View v) throws IOException, XmlPullParserException
{
    try {
    String usuario=((EditText)findViewById(R.id.etUsu)).getText().toString();
    String pass=((EditText)findViewById(R.id.etPass)).getText().toString();
    String[] pars = new String[2];

             String[] = new String[2];
             pars[0] = usuario;
    pars[1] = pass;
            new ValidacionThread().execute(pars);
             Intent intent=new Intent(this, MainActivity.class);
    intent.putExtra("idBoton",12);
    intent.putExtra("usuario",usu);
    startActivityForResult(intent, 0);          

} }
public class ValidacionThread extends AsyncTask<String, Void, Usuario> {

    private final String NAMESPACE = "http://webservices.pcp/";
    private final String URL = "http://127.0.0.1:8080/webServices/pcpWS?wsdl";
    private final String SOAPACTION = "";
    private final String METHOD = "ValidarUsuario";

    protected Usuario doInBackground(String[] pars) {

               String user = pars[0];
               String password = pars[1];
                SoapObject request = new SoapObject(NAMESPACE, METHOD); 
                SoapSerializationEnvelope sobre = new SoapSerializationEnvelope(SoapEnvelope.VER11);
                sobre.dotNet = false;       
                request.addProperty("login", user);        
                request.addProperty("password", password); 
                sobre.setOutputSoapObject(request); 

                HttpTransportSE transporte = new HttpTransportSE(URL);        
                try {
                    transporte.call(SOAPACTION, sobre);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                SoapObject resultado = null;
                try {
                    resultado = (SoapObject)sobre.getResponse();
                } catch (SoapFault e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                Usuario usu = new Usuario();
                usu.IdUsuario= resultado.getProperty(0).toString();
                usu.Nombre = resultado.getProperty(1).toString();
                usu.Apellidos = resultado.getProperty(2).toString();
                usu.Rol = resultado.getProperty(3).toString();   
                usu.Centro=resultado.getProperty(4).toString();
                return usu;     

}
       protected void  onPostExecute(ValidacionThread vt) {

        }
}