onPostExecute AysncTask取消并保持相同的活动

时间:2015-11-20 06:33:35

标签: android android-fragments android-intent android-asynctask

在此我想取消asynctask我在listview onclickitem中调用了aysnc任务... 因此,如果特定行中没有数据,那么它将停止执行并保持相同的活动。

我在click中调用了类,如果条件为false,因为file_path为null,那么它将保持在同一个活动中,不会在另一个活动中继续进行。 但在我的情况下,它将移动到另一个活动,我尝试了很多东西,如oncancelled(),cancel()等方法,但他们不工作我把所有的循环以及切换案例打破。

public class EAdFragment extends Fragment {
    ListView lvAdSurvey;
    JSONObject json = null;
    public static final String FIRST_COLUMN = "Upl_ID";
    public static final String SECOND_COLUMN = "File_Description";
    JSONArray jarray = null;
    JSONObject jsonObj = null;
    String upload_type;
    String upl_id;
    File f;
    String imgurl;
    ProgressDialog pDialog;
    String upl_ID, type_of_upload, file_description, amount;
    String file_path = null;
    String file_type, related_to, country, state, city, Number_of_user,
            type_illegal;
    GetData task;
    ViewHolder holder;
    public ListAdapter adapter;
    String text;
    public List<EAdvertActivityData> listData = new ArrayList<EAdvertActivityData>();

    public void onViewCreated(View view, Bundle savedInstanceState) {
        lvAdSurvey = (ListView) view.findViewById(R.id.lvAdSurvey);
        new GetList().execute();
        lvAdSurvey.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                // String text =
                // lvAdSurvey.getItemAtPosition(position).toString();
                holder = (ViewHolder) view.getTag();
                text = holder.txtFirstColumn.getText().toString();
                Log.d("text:", text);
                task = new GetData();
                task.execute();


            }
        });
    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_ead, container,
                false);
        return rootView;
    }

    private class GetList extends AsyncTask<String, String, JSONObject> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        protected JSONObject doInBackground(String... args) {
            String url = "url";
            JSONParser jParser = new JSONParser();
            jsonObj = jParser.getJSONFromUrl(url);
            try {
                jarray = jsonObj.getJSONArray("result");
                Log.d("lengtharray:", String.valueOf(jarray.length()));
                for (int i = 0; i < jarray.length(); i++) {
                    EAdvertActivityData data = new EAdvertActivityData();
                    JSONObject jobject = new JSONObject(jarray.get(i)
                            .toString());
                    upload_type = jobject.optString("Upl_ID").toString();
                    String description = jobject.optString("File_description")
                            .toString();
                    /*
                     * Log.d("upload_type",upload_type);
                     * Log.d("description",description);
                     */data.setUpl_ID(upload_type);
                    data.setFile_description(description);
                    listData.add(data);
                    Log.d("data:", listData.toString());
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return jsonObj;
        }

        protected void onPostExecute(JSONObject jsonObject) {
            EAdListViewAdapter adapter = new EAdListViewAdapter(getActivity(),
                    listData);
            lvAdSurvey.setAdapter(adapter);
        }
    }

    private class GetData extends AsyncTask<String, String, String> {
        int flag=0;
        protected void onPreExecute() {
            pDialog = new ProgressDialog(getActivity());
            pDialog.setMessage("Loading Image ....");
            pDialog.setCancelable(true);
            pDialog.show();
        }

        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            SharedPreferences pref = getActivity().getSharedPreferences(
                    "SoundSettings", Context.MODE_PRIVATE);
            String user_id = pref.getString("user_id", LoginActivity.userid);
            String url = "url"
                    + text;

            JSONParser jParser = new JSONParser();
            try {
                json = jParser.getJSONFromUrl(url);
                Log.d("jsonadvert:", json.toString());
                String status = json.getString("fetchdata");
                if (status.equals("Success")) {
                    type_of_upload = json.getString("Type_of_Upload");
                    file_description = json.getString("File_description");
                    amount = json.getString("Amount");
                    file_path = json.getString("file_path");
                    file_type = json.getString("File_type");
                    related_to = json.getString("Related_to");
                    country = json.getString("Country");
                    // state = json.getString("state");
                    Number_of_user = json.getString("Number_of_usr");
                    type_illegal = json.getString("Type_llegal");
                    Log.d("type_illegal:", type_illegal);
                    Log.d("file_path:", file_path);

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        protected void onPostExecute(String args) {
            pDialog.dismiss();
            if(file_path==null){
                Toast.makeText(getActivity(), "Image does not exists", Toast.LENGTH_LONG).show();
                pDialog.cancel();
                task.cancel(true);
            }else{
                imgurl = "http://sharpersofttech.com/sign_up/" + file_path;
                Intent in = new Intent(getActivity(), AdvertActivity.class);
                in.putExtra("upl_id", text);
                in.putExtra("file_description", file_description);
                in.putExtra("imgurl", imgurl);
                startActivity(in);
                ((Activity) getActivity()).overridePendingTransition(0, 0);
            }
        }
    }
}

0 个答案:

没有答案