2014-05-06 16 views
0

我做了一個自定義進度對話框,我婉關閉它在我的postExecute方法,我下面試過,但我不知道怎麼打發它。我已經嘗試如下,誰能請告訴我,我怎麼能關閉那些定製對話框如何關閉後這個進程對話框中執行的Android

主要

package com.epe.yehki.ui; 

import java.util.ArrayList; 
import java.util.HashMap; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.ProgressBar; 
import android.widget.RelativeLayout; 
import android.widget.TextView; 

import com.epe.yehki.adapter.ProductAdapter; 
import com.epe.yehki.backend.BackendAPIService; 
import com.epe.yehki.uc.Header; 
import com.epe.yehki.uc.Menu; 
import com.epe.yehki.util.Const; 
import com.epe.yehki.util.Pref; 
import com.epe.yehki.util.Utils; 
import com.example.yehki.R; 

public class SearchActivity extends Activity { 
    public com.epe.yehki.uc.Menu searchMenu; 
    public Header searchHeader; 
    public EditText et_serach; 
    JSONObject jsonObj; 
    private ProgressDialog pDialog; 
    Intent in = null; 
    String searchUrl; 
    int flag; 
    public Header header; 
    public Menu menu; 
    public TextView title; 
    Bitmap bitmap;; 
    private ProductAdapter productContent; 

    // PRODUCTS.... 
    // arrayLists...... 
    public static ArrayList<String> productArray; 
    public static ArrayList<String> categoryArray; 
    ProgressBar progressBar; 

    // 

    // contacts JSONArray 
    JSONArray subcategories = null; 
    JSONArray products = null; 
    public String catid; 
    public String id; 
    public String pid; 
    String name; 
    ListView lv; 

    // Hashmap for ListView 
    ArrayList<HashMap<String, String>> subcategoryList; 
    ArrayList<HashMap<String, String>> productList; 

    // new 
    public String proname; 
    public String prodesc; 
    public String proimg; 

    public String proMinOrderQty; 
    public String proMinPrice; 
    public String proMaxPrice; 
    public String proTerms; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     setContentView(R.layout.activity_search); 
     productList = new ArrayList<HashMap<String, String>>(); 
     searchMenu = (com.epe.yehki.uc.Menu) findViewById(R.id.menusearch); 
     searchMenu.setSelectedTab(2); 
     searchHeader = (Header) findViewById(R.id.headersearch); 
     searchHeader.title.setText("Search"); 
     et_serach = (EditText) findViewById(R.id.et_serach); 
     lv = (ListView) findViewById(R.id.serch_list); 
     productContent = new ProductAdapter(SearchActivity.this, productList); 
     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       if (Pref.getValue(SearchActivity.this, Const.PREF_CUSTOMER_ID, "") != null && !Pref.getValue(SearchActivity.this, Const.PREF_CUSTOMER_ID, "").equals(" ") 
         && !Pref.getValue(SearchActivity.this, Const.PREF_CUSTOMER_ID, "").equals("0")) { 
        in = new Intent(getApplicationContext(), ProductDetailActivity.class); 
        proname = ((TextView) view.findViewById(R.id.product_label)).getText().toString(); 

        // getting ProductId from the tag... 

        pid = productList.get(position).get(Const.TAG_PRODUCT_ID); 
        proimg = productList.get(position).get(Const.TAG_PRODUCT_IMG); 
        System.out.println(":::::::::::::::;;THE INTENT FOR THE PRODUCUT DETIALS ACTIVITY=================" + pid); 

        in.putExtra(Const.TAG_PRODUCT_ID, pid); 
        in.putExtra(Const.TAG_PRODUCT_IMG, proimg); 
        in.putExtra(Const.TAG_PRODUCT_NAME, proname); 

        startActivity(in); 
       } else { 
        in = new Intent(SearchActivity.this, LoginActivity.class); 
        startActivity(in); 
       } 
      } 
     }); 

     et_serach.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 
       System.out.println(":::::::::::::::;after text changed called:::"); 
       productList.clear(); 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      } 

      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       if (s.length() != 0) { 
        System.out.println(":::::::::::::::;on text changed called:::"); 
        // CALL SEARCH API........!!! 
        productList.clear(); 
        new GetSearchList().execute(); 
       } 

      } 
     }); 
    } 

    public void addProgressBar(Activity activity) { 
     final ViewGroup rootFrameLayout = (ViewGroup) activity.getWindow().peekDecorView(); 
     final ViewGroup modal = new RelativeLayout(activity); 
     progressBar = new ProgressBar(activity); 
     LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
     ((android.widget.RelativeLayout.LayoutParams) layoutParams).addRule(RelativeLayout.CENTER_IN_PARENT); 
     modal.addView(progressBar, layoutParams); 
     rootFrameLayout.addView(modal, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); 
     rootFrameLayout.invalidate(); 

    } 

    // SEARCH API()..!!! 
    private class GetSearchList extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      // Showing progress dialog 
      productList.clear(); 

      addProgressBar(SearchActivity.this);// pDialog.show(); 

     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      // Creating service handler class instance 
      BackendAPIService sh = new BackendAPIService(); 
      searchUrl = Const.API_PRODUCT + "?product_name=" + et_serach.getText().toString().trim(); 
      System.out.println(":::::::::::::::::::SUB URL:::::::::::::::::" + searchUrl); 
      // Making a request to url and getting response 
      String jsonStr = sh.makeServiceCall(searchUrl, BackendAPIService.GET); 

      Log.d("Response: ", "> " + jsonStr); 
      try { 
       if (jsonStr != null) { 

        jsonObj = new JSONObject(jsonStr); 
        if (jsonObj.getString(Const.TAG_STATUS).equals("success")) { 
         if (jsonObj.has(Const.TAG_PRODUCT_DETAIL)) { 
          System.out.println("::::::::::::::::true::::::::::::::::" + jsonObj.has(Const.TAG_PRODUCT_DETAIL)); 
          products = jsonObj.getJSONArray(Const.TAG_PRODUCT_DETAIL); 

          if (products != null && products.length() != 0) { 
           // looping through All Contacts 

           for (int i = 0; i < products.length(); i++) { 
            JSONObject c = products.getJSONObject(i); 

            pid = c.getString(Const.TAG_PRODUCT_ID); 
            System.out.println("::::::::::::::::::PARSING PRODUCT ID:::::::::::::" + pid); 
            String proname = c.getString(Const.TAG_PRODUCT_NAME); 
            String prodesc = c.getString(Const.TAG_LISTING_DESCRIPTION); 
            String proimg = Const.API_HOST + "/" + c.getString(Const.TAG_PRODUCT_IMG); 
            System.out.println("::::::::::::::;products Length:::::::::::" + products.length()); 
            System.out.println(":::::::::::::::My Image Url:::::::::::::" + proimg); 
            String proMinOrderQty = c.getString(Const.TAG_PRODUCT_MIN_ORDER_QTY); 
            c.getString(Const.TAG_PRODUCT_MIN_PRICE); 
            c.getString(Const.TAG_PRODUCT_MAX_PRICE); 

            c.getString(Const.TAG_PRODUCT_PAYMENT_TERMS); 

            // for company details..!!! 

            // new Working 

            HashMap<String, String> product = new HashMap<String, String>(); 

            product.put(Const.TAG_PRODUCT_ID, pid); 
            product.put(Const.TAG_PRODUCT_NAME, proname); 
            product.put(Const.TAG_PRODUCT_IMG, proimg); 
            product.put(Const.TAG_PRODUCT_MIN_ORDER_QTY, proMinOrderQty); 
            product.put(Const.TAG_PRODUCT_DESCRIPTION, prodesc); 
            productList.add(product); 

           } 
          } 
         } 
        } else { 
         runOnUiThread(new Runnable() { 
          public void run() { 
           Utils.showCustomeAlertValidation(SearchActivity.this, "No Product found", "Yehki", "Ok"); 
          } 
         }); 
        } 

       } else { 
        Log.e("ServiceHandler", "Couldn't get any data from the url"); 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
       System.out.println("::::::::::::::::::got an error::::::::::::"); 
      } 
      return null; 
     } 

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

      productContent.notifyDataSetChanged(); 
      lv.setAdapter(productContent); 

     } 

    } 
} 
+0

CAQNùTELL哪裏PRE在程序Execute方法?? –

+0

您已評論pdialog.show(); –

+0

所以如何將ü駁回後上時pdialog.show()已經執行評論???你可以解釋嗎? –

回答

0

它很容易嘗試: pDialog.dismiss();

+0

請看到我的編輯的代碼......它是一種對自定義對話框,我想dismis它onPostExecute()方法 –

0

STEP 1

申報進度上面的對話框上創建

私人ProgressDialog pDialog;

STEP 2

定義preExecute方法

protected void onPreExecute() { 
    super.onPreExecute(); 
    pDialog = new ProgressDialog(context); 
    pDialog.setTitle("Please wait"); 
    pDialog.setMessage("Processing..."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(true); 
    pDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 


    pDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.dismiss(); 
     } 
    }); 

    pDialog.show(); 
} 

步驟3

//Your back ground task as it is 

步驟4

地址postExecute方法

protected void onPostExecute() 

     { 
    pDialog.dismiss(); 

    } 
+0

我想要一個簡單的對話框,你給的代碼給了我異常 –

+0

據只有簡單的你發現它複雜嗎? –

0

你需要就叫dismiss()方法ProgressDialog。像

protected void onPostExecute(){ 

    pDialog.dismiss(); 

} 
0

你有progressBar變量保存在您的佈局進度條的引用。要隱藏它,叫

progressBar.setVisibility(View.GONE); 

RelativeLayout你放置在ProgressBar是不必要的。還要考慮包括ProgressBar靜態的佈局,只是它的可見性設置爲必要VISIBLE/GONE

相關問題