Android 在执行后获取值

Android 在执行后获取值,android,android-asynctask,Android,Android Asynctask,我正在执行从json文件读取的Asynctask函数。我希望在执行后传递上,像字符串联系人的“nombre,categoria,hora,lugar…”传递给我的另一个活动。如何在postExecute上获取联系人的值?有人能帮我吗?这是我的密码 private class GetProgramaSC extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecut

我正在执行从json文件读取的Asynctask函数。我希望在执行后传递上,像字符串联系人的“nombre,categoria,hora,lugar…”传递给我的另一个活动。如何在postExecute上获取联系人的值?有人能帮我吗?这是我的密码

private class GetProgramaSC extends AsyncTask<Void, Void, Void> {


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // Showing progress dialog
            pDialog = new ProgressDialog(getActivity());
            if(idioma.equalsIgnoreCase("es")){  
                pDialog.setMessage("Por favor espere...");
            }
            else{
                pDialog.setMessage("Itxaron mesedez...");
            }
            pDialog.setCancelable(false);
            pDialog.show();

        }

        @Override
        protected Void doInBackground(Void... arg0) {

                try {

                    JSONObject jsonObj = new JSONObject(loadJSONFromAsset());

                    // Getting JSON Array node
                   eventos = jsonObj.getJSONArray("results");

                    // looping through All Contacts
                    for (int i = 0; i < eventos.length(); i++) {
                        JSONObject c = eventos.getJSONObject(i);

                        String categoria = c.getString(TAG_CATEGORIA);
                        String nombre = c.getString(TAG_NOMBRE);
                        String hora = c.getString(TAG_HORA);
                        String lugar = c.getString(TAG_LUGAR);
                        String fecha = c.getString(TAG_FECHA);
                        String coordenadas = c.getString(TAG_COORDENADAS);
                        String info = c.getString(TAG_INFO);
                        String imagen= c.getString(TAG_IMAGEN);

                        // tmp hashmap for single contact
                        HashMap<String, String> contact = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        contact.put("categoria", categoria);
                        contact.put("nombre", nombre);
                        contact.put("hora", hora);
                        contact.put("nombre_lugar", lugar);
                        contact.put("fecha", fecha);
                        contact.put("coordenadas", coordenadas);
                        contact.put("info", info);
                        contact.put("imagen", imagen);


                        // adding contact to contact list
                        eventosList.add(contact);
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }


            return null;


        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (pDialog.isShowing())
                pDialog.dismiss();




        }

    }
私有类GetProgramaSC扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
//显示进度对话框
pDialog=newprogressdialog(getActivity());
if(a.equalsIgnoreCase(“es”){
pDialog.setMessage(“Por-favor-espere…”);
}
否则{
pDialog.setMessage(“Itxaron mesedez…”);
}
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…arg0){
试一试{
JSONObject jsonObj=新的JSONObject(loadJSONFromAsset());
//获取JSON数组节点
eventos=jsonObj.getJSONArray(“结果”);
//通过所有触点循环
对于(int i=0;ivalue
联系方式。放置(“分类”,分类);
联系人:put(“nombre”,nombre);
联系方式。放置(“hora”,hora);
联系人:put(“nombre_lugar”,lugar);
联系人:put(“fecha”,fecha);
联系方式。放置(“coordenadas”,coordenadas);
联系人。放置(“信息”,信息);
联系人:put(“imagen”,imagen);
//将联系人添加到联系人列表
eventosList.add(联系人);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//关闭进度对话框
if(pDialog.isShowing())
pDialog.disclose();
}
}
非常感谢

这很简单 将数据传递到postexecute 你可以随心所欲地处理数据

  private class GetProgramaSC extends AsyncTask<String, String, String> {


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                // Showing progress dialog
                pDialog = new ProgressDialog(getActivity());
                if(idioma.equalsIgnoreCase("es")){  
                    pDialog.setMessage("Por favor espere...");
                }
                else{
                    pDialog.setMessage("Itxaron mesedez...");
                }
                pDialog.setCancelable(false);
                pDialog.show();

            }

            @Override
            protected Void doInBackground(String... arg0) {



                return loadJSONFromAsset();


            }

            @Override
            protected void onPostExecute(String result) {
                super.onPostExecute(result);
                // Dismiss the progress dialog

      try {

                        JSONObject jsonObj = new JSONObject(result);

                        // Getting JSON Array node
                       eventos = jsonObj.getJSONArray("results");

                        // looping through All Contacts
                        for (int i = 0; i < eventos.length(); i++) {
                            JSONObject c = eventos.getJSONObject(i);

                            String categoria = c.getString(TAG_CATEGORIA);
                            String nombre = c.getString(TAG_NOMBRE);
                            String hora = c.getString(TAG_HORA);
                            String lugar = c.getString(TAG_LUGAR);
                            String fecha = c.getString(TAG_FECHA);
                            String coordenadas = c.getString(TAG_COORDENADAS);
                            String info = c.getString(TAG_INFO);
                            String imagen= c.getString(TAG_IMAGEN);

                            // tmp hashmap for single contact
                            HashMap<String, String> contact = new HashMap<String, String>();

                            // adding each child node to HashMap key => value
                            contact.put("categoria", categoria);
                            contact.put("nombre", nombre);
                            contact.put("hora", hora);
                            contact.put("nombre_lugar", lugar);
                            contact.put("fecha", fecha);
                            contact.put("coordenadas", coordenadas);
                            contact.put("info", info);
                            contact.put("imagen", imagen);


                            // adding contact to contact list
                            eventosList.add(contact);
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

 if (pDialog.isShowing())
                    pDialog.dismiss();




            }

        }
在另一项活动中

Bundle bundle = this.getIntent().getExtras();

if(bundle != null) {
   hashMap = bundle.getSerializable("HashMap");
}

将您的任务签名更改为:

私有类GetProgramaSC扩展异步任务

然后
doInBackground
必须返回列表。因此,在
doInBackground
末尾返回您的
eventos
,您将在PostExecute上收到它

private class GetProgramaSC extends AsyncTask<Void, Void, List<String>> {

...

    @Override
    protected List<String> doInBackground(Void... arg0) {

          ...

        return eventos;


    }

    @Override
    protected void onPostExecute(List<String> result) {
        super.onPostExecute(result);
        // Dismiss the progress dialog
        if (pDialog.isShowing())
            pDialog.dismiss();

    }

}
私有类GetProgramaSC扩展异步任务{
...
@凌驾
受保护列表doInBackground(无效…arg0){
...
返回事件;
}
@凌驾
受保护的void onPostExecute(列表结果){
super.onPostExecute(结果);
//关闭进度对话框
if(pDialog.isShowing())
pDialog.disclose();
}
}

在意图的帮助下,无法将大量字符串数据传递给另一个活动,因此在解析JSON后,您可以将这些数据存储在应用程序类中,该类可以在项目中的任何位置调用。

使用对象扩展您的类(无论您希望结果是什么)

public class GetProgramaSC extends AsyncTask<Void, Void, Object> {}
希望它能帮助你

    @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (pDialog.isShowing())
                pDialog.dismiss();
            Intent i = new Intent(getActivity, NewActivity.class);
            i.putExtra("arraylist", eventolist);
            startActivity(i);
}
然后是新活动:

ArrayList<HashMap<String, String>> arraylist = (ArrayList<HashMap<String,String>>) getIntent().getSerializableExtra("arraylist");
ArrayList ArrayList=(ArrayList)getIntent().getSerializableExtra(“ArrayList”);
现在只需从新活动中的arraylist中提取hashmap及其值!
例如:-arraylist.get(0.get(“nombre”)

请参阅,稍后如何将“nombre”传递给其他活动?谢谢,稍后我如何将“nombre”传递给其他活动?感谢你的意图,并以这种意图调用活动?Intent in=新的Intent(getActivity(),AnotherActivity.class);in.putExtra(“nombre”,nombre);是的,就是这样
    @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            // Dismiss the progress dialog
            if (pDialog.isShowing())
                pDialog.dismiss();
            Intent i = new Intent(getActivity, NewActivity.class);
            i.putExtra("arraylist", eventolist);
            startActivity(i);
}
ArrayList<HashMap<String, String>> arraylist = (ArrayList<HashMap<String,String>>) getIntent().getSerializableExtra("arraylist");