bhagyasri patel
bhagyasri patel

Reputation: 61

Progress bar is not displayed while connecting to the server

I am working with an application which connect to server..and i want progressbar appears when connecting with the server in the application.I have used asyncTask also.BUt then also in my application progress bar is not appearing and screen gets black when connecting to the server.Plz help me...I have created three AsyncTask..

public class LocationActivity extends ListActivity {

    TextView txtName;
    TextView txtState;

    TextView distance;
    TextView txtparamname;
    TextView txtparamvalue;
    TextView output;
    TextView txtdate;
    TextView txtproc_date;
    TextView looking;
    String LAT;
    String LONGITUDE;
    ImageButton forecast;
    ImageView image;
    JSONArray weatherinfo = null;
    ActionBar actionBar;
    MenuItem refreshMenuItem;

    // Progress Dialog
    private ProgressDialog pDialog;

    // JSON parser class
    JSONParser jsonParser = new JSONParser();
    ArrayList<HashMap<String, String>> weatherlist;

    // URL for getting weather forecast details


    private static final String url_Weather_details = "";
    private static final String url_Weather_details1 = "";





    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (isNetworkAvailable()) {
            new GetWeatherDetails0().execute();
        } else {

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);

            // Setting Dialog Title
            alertDialog.setTitle("Network Connection Error");

            // Setting Dialog Message
            alertDialog.setMessage("Your 2G/3G/Wifi is not working");
            alertDialog.setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int which) {
                            Intent i = new Intent(getApplicationContext(),
                                    AndroidGPSTrackingActivity.class);
                            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            startActivity(i);

                        }
                    });
            alertDialog.show();
            // Toast.makeText(this, "Network unavailable",
            // Toast.LENGTH_SHORT).show();
        }
    }

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

    class GetWeatherDetails0 extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(LocationActivity.this);
            pDialog.setMessage("Loading Your weather details. Please wait...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        /**
         * Getting weather details in background thread
         * */
        @SuppressLint("SimpleDateFormat")
        protected String doInBackground(String... params1) {

            int success = 0;
            int success2 = 0;
            // getting LAT/LONG details from intent
            Intent i = getIntent();

            // getting LAT/LONG from intent
            LAT = i.getStringExtra(TAG_LAT);
            LONGITUDE = i.getStringExtra(TAG_LONG);
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            Log.d("get LATITUDE ====", LAT);
            Log.d("get LONGITUDE ====", LONGITUDE);
            params.add(new BasicNameValuePair("LAT", LAT));
            params.add(new BasicNameValuePair("LONGITUDE", LONGITUDE));
            JSONObject json = jsonParser.makeHttpRequest(url_Weather_details,
                    "GET", params);
            try {
                success = json.getInt(TAG_SUCCESS);

            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            if (success == 3) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                        LocationActivity.this);

                // Setting Dialog Title
                // alertDialog.setTitle("Network Connection Error");

                // Setting Dialog Message
                alertDialog
                        .setMessage("Server encountered some error.Sorry for inconvenience.Please try again later");
                // On pressing Settings button
                alertDialog.setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                Intent i = new Intent(getApplicationContext(),
                                        AndroidGPSTrackingActivity.class);
                                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(i);

                            }
                        });
                alertDialog.show();
            } else if (success == 2) {
                AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                        LocationActivity.this);

                // Setting Dialog Title
                // alertDialog.setTitle("Network Connection Error");

                // Setting Dialog Message
                alertDialog.setMessage("Sorry,Forecast is not available");
                // On pressing Settings button
                alertDialog.setPositiveButton("OK",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                Intent i = new Intent(getApplicationContext(),
                                        AndroidGPSTrackingActivity.class);
                                i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                startActivity(i);

                            }
                        });
                alertDialog.show();
            }

            else {
                // success=0;
                JSONObject json2 = jsonParser.makeHttpRequest(
                        url_Weather_details1, "GET", params);
                try {
                    // Log.d("1","yty");
                    success2 = json2.getInt(TAG_SUCCESS);
                    // Log.d("q",Integer.toString (success2));
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                if (success2 == 3) {
                    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                            LocationActivity.this);

                    // Setting Dialog Title
                    // alertDialog.setTitle("Network Connection Error");

                    // Setting Dialog Message
                    alertDialog
                            .setMessage("Server encountered some error.Sorry for inconvenience.Please try again later");
                    // On pressing Settings button
                    alertDialog.setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    Intent i = new Intent(
                                            getApplicationContext(),
                                            AndroidGPSTrackingActivity.class);
                                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                    startActivity(i);

                                }
                            });
                    alertDialog.show();
                } else if (success2 == 2) {
                    AlertDialog.Builder alertDialog = new AlertDialog.Builder(
                            LocationActivity.this);

                    // Setting Dialog Title
                    // alertDialog.setTitle("Network Connection Error");

                    // Setting Dialog Message
                    alertDialog.setMessage("Sorry,Forecast is not available");
                    // On pressing Settings button
                    alertDialog.setPositiveButton("OK",
                            new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    Intent i = new Intent(
                                            getApplicationContext(),
                                            AndroidGPSTrackingActivity.class);
                                    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                                    startActivity(i);

                                }
                            });
                    alertDialog.show();
                } else

                {
                    setContentView(R.layout.activity_location);


                    weatherlist = new ArrayList<HashMap<String, String>>();

                    // Getting complete weather details in background thread
                    new GetWeatherDetails().execute();
                    new GetWeatherDetails1().execute();
                    // Get listview
                    ListView lv = getListView();

                    // on seleting single product
                    // launching Edit Product Screen
                    lv.setOnItemClickListener(new OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent,
                                View view, int position, long id) {
                            // getting values from selected ListItem
                            String FC_DATE = ((TextView) view
                                    .findViewById(R.id.fc_date)).getText()
                                    .toString();

                            // Starting new intent
                            Intent in = new Intent(getApplicationContext(),
                                    ForecastActivity.class);
                            // sending pid to next activity

                            in.putExtra(TAG_FC_DATE, FC_DATE);
                            in.putExtra(TAG_LAT, LAT);
                            in.putExtra(TAG_LONG, LONGITUDE);
                            // starting new activity and expecting some response
                            // back
                            startActivityForResult(in, 100);
                        }
                    });

                }
            }

            return null;
        }

        protected void onPostExecute(String file_url) {
            // dismiss the dialog once got all details
            pDialog.dismiss();
        }

    }

    /**
     * Background Async Task to Get complete weather details
     * */
    class GetWeatherDetails extends AsyncTask<String, String, String> {


        @SuppressLint("SimpleDateFormat")
        protected String doInBackground(String... params1) {

            // Check for success tag
            int success;
            String OutputData = "";
            try {

                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                Log.d("get LATITUDE ====", LAT);
                Log.d("get LONGITUDE ====", LONGITUDE);
                params.add(new BasicNameValuePair("LAT", LAT));
                params.add(new BasicNameValuePair("LONGITUDE", LONGITUDE));
                Log.d("params", params.toString());

                // getting weather details by making HTTP request
                // Note that weather details url will use GET request
                JSONObject json = jsonParser.makeHttpRequest(
                        url_Weather_details, "GET", params);

                // check your log for json response
                Log.d("Weather Details", json.toString());

                // json success tag
                success = json.getInt(TAG_SUCCESS);
                if (success == 1) {
                    // successfully received weather details
                    JSONArray stationObj = json.getJSONArray(TAG_WEATHER); // JSON
                                                                            // Array
                    int lengthJsonArr = stationObj.length();
                    // get weather info object from JSON Array
                    for (int i = 0; i < lengthJsonArr; i++) {
                        JSONObject station = stationObj.getJSONObject(i);

                        // Log.d("FC_DATE",station.getString("FC_DATE"));

                        // JSONObject station1 = stationObj.getJSONObject(1);
                        // JSONObject station2 = stationObj.getJSONObject(2);

                        // Edit Text
                        txtName = (TextView) findViewById(R.id.textView2);
                        txtState = (TextView) findViewById(R.id.textView4);
                        txtdate = (TextView) findViewById(R.id.textView5);
                        // txtproc_date=(TextView)findViewById(R.id.textView1);
                        distance = (TextView) findViewById(R.id.textView3);
                        looking = (TextView) findViewById(R.id.textView6);


                        OutputData += " \n" + station.getString(TAG_PARAM_NAME)
                                + " : " + station.getString(TAG_PARAM_VALUE)
                                + " " + station.getString(TAG_PARAM_UNIT)
                                + "\n";
                        // txtdate= (TextView)findViewById(R.id.textView1);
                        // txtparamname=(TextView)findViewById(R.id.textView2);
                        // txtparamvalue=(TextView)findViewById(R.id.textView7);
                        // table1=(TableRow)findViewById(R.id.tableRow1);

                        txtName.setText("Forecast location: "
                                + station.getString(TAG_STATION));
                        txtName.setTextSize(size);
                        txtName.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
                        txtState.setText("State:   "
                                + station.getString(TAG_STATE));
                        txtState.setTextSize(size);
                        txtState.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
                        String distance1 = station.getString(TAG_DISTANCE);
                        looking.setText("Looking Ahead");
                        looking.setTextSize(size);
                        looking.setTypeface(Typeface.DEFAULT, Typeface.BOLD);

                        // DecimalFormat df2 = new DecimalFormat("0.##");
                        // String distance2=df2.format(distance1);

                        double distance2 = Double.parseDouble(distance1);


                    }
                    tl = (TableLayout) findViewById(R.id.maintable);
                    t2 = (TableLayout) findViewById(R.id.maintable1);
                    addHeaders();
                    addData();
                    addHeaders1();
                    addData1();


            } catch (JSONException e) {
                e.printStackTrace();
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }



    }

    class GetWeatherDetails1 extends AsyncTask<String, String, String> {

        /**
         * Before starting background thread Show Progress Dialog
         * */

        /**
         * getting All products from url
         * */
        @SuppressLint("SimpleDateFormat")
        protected String doInBackground(String... args) {
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            Log.d("get LATITUDE ====", LAT);
            Log.d("get LONGITUDE ====", LONGITUDE);
            params.add(new BasicNameValuePair("LAT", LAT));
            params.add(new BasicNameValuePair("LONGITUDE", LONGITUDE));
            Log.d("params", params.toString());
            JSONObject json = jsonParser.makeHttpRequest(url_Weather_details1,
                    "GET", params);

            // Check your log cat for JSON response
            Log.d("All Products: ", json.toString());

            try {
                // Checking for SUCCESS TAG
                int success = json.getInt(TAG_SUCCESS);

                if (success == 1) {
                    // products found
                    // Getting Array of Products
                    weatherinfo = json.getJSONArray(TAG_WEATHER);

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

                        // String id = c.getString(TAG_PID);
                        String FC_DATE = c.getString(TAG_FC_DATE);
                        SimpleDateFormat sf = new SimpleDateFormat(
                                "dd-MMM-yyyy");
                        SimpleDateFormat sf1 = new SimpleDateFormat(
                                "yyyy-MM-dd hh:mm:ss");
                        String date = sf.format(sf1.parse(FC_DATE));

                        // creating new HashMap
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        // map.put(TAG_PID, id);
                        map.put(TAG_FC_DATE, date);

                        // adding HashList to ArrayList
                        weatherlist.add(map);
                    }
                } /*
                 * else if(success==2){
                 * 
                 * // weather details not found Intent i = new
                 * Intent(getApplicationContext(), NotFound.class); // Closing
                 * all previous activities
                 * i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);
                 * } // no products found // Launch Add New product Activity
                 * else { { // weather details not found Intent i = new
                 * Intent(getApplicationContext(), Exception_report.class); //
                 * Closing all previous activities
                 * i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(i);
                 * } }
                 */
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }

        /**
         * After completing background task Dismiss the progress dialog
         * **/
        protected void onPostExecute(String file_url) {
            // dismiss the dialog after getting all products
            pDialog.dismiss();
            // updating UI from Background Thread

            /**
             * Updating parsed JSON data into ListView
             * */
            ListAdapter adapter = new SimpleAdapter(LocationActivity.this,
                    weatherlist, R.layout.list_item,
                    new String[] { TAG_FC_DATE }, new int[] { R.id.fc_date });

            // updating list view
            setListAdapter(adapter);

        }

    }


}

Logcat:

11-16 16:35:50.289: D/Network(24204): Network
11-16 16:35:50.289: D/Lat(24204): 23.0350297
11-16 16:35:50.289: D/LONGITUDE(24204): 72.5252883
11-16 16:35:50.459: D/ProgressBar(24204): setProgress = 0
11-16 16:35:50.459: D/ProgressBar(24204): setProgress = 0, fromUser = false
11-16 16:35:50.459: D/ProgressBar(24204): mProgress = 0mIndeterminate = false, mMin = 0, mMax = 10000
11-16 16:35:50.549: D/get LATITUDE ====(24204): 23.0350297
11-16 16:35:50.549: D/get LONGITUDE ====(24204): 72.5252883
11-16 16:35:50.649: D/ProgressBar(24204): updateDrawableBounds: left = 0
11-16 16:35:50.649: D/ProgressBar(24204): updateDrawableBounds: top = 0
11-16 16:35:50.649: D/ProgressBar(24204): updateDrawableBounds: right = 96
11-16 16:35:50.649: D/ProgressBar(24204): updateDrawableBounds: bottom = 96
11-16 16:36:01.609: W/dalvikvm(24204): threadid=12: thread exiting with uncaught exception (group=0x41808898)
11-16 16:36:01.659: E/AndroidRuntime(24204): FATAL EXCEPTION: AsyncTask #1
11-16 16:36:01.659: E/AndroidRuntime(24204): java.lang.RuntimeException: An error occured while executing doInBackground()
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.os.AsyncTask$3.done(AsyncTask.java:299)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.FutureTask.run(FutureTask.java:239)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.lang.Thread.run(Thread.java:841)
11-16 16:36:01.659: E/AndroidRuntime(24204): Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6857)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1084)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.View.requestLayout(View.java:16784)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.View.requestLayout(View.java:16784)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.View.requestLayout(View.java:16784)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.view.ViewGroup.removeAllViews(ViewGroup.java:4136)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.app.Activity.setContentView(Activity.java:1956)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at com.example.gpstracking.LocationActivity$GetWeatherDetails0.doInBackground(LocationActivity.java:309)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at com.example.gpstracking.LocationActivity$GetWeatherDetails0.doInBackground(LocationActivity.java:1)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at android.os.AsyncTask$2.call(AsyncTask.java:287)
11-16 16:36:01.659: E/AndroidRuntime(24204):    at java.util.concurrent.FutureTask.run(FutureTask.java:234)
11-16 16:36:01.659: E/AndroidRuntime(24204):    ... 3 more
11-16 16:36:01.949: E/WindowManager(24204): Activity com.example.gpstracking.LocationActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42414e78 V.E..... R.....ID 0,0-684,192} that was originally added here
11-16 16:36:01.949: E/WindowManager(24204): android.view.WindowLeaked: Activity com.example.gpstracking.LocationActivity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{42414e78 V.E..... R.....ID 0,0-684,192} that was originally added here
11-16 16:36:01.949: E/WindowManager(24204):     at android.view.ViewRootImpl.<init>(ViewRootImpl.java:456)
11-16 16:36:01.949: E/WindowManager(24204):     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:258)
11-16 16:36:01.949: E/WindowManager(24204):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:73)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.Dialog.show(Dialog.java:287)
11-16 16:36:01.949: E/WindowManager(24204):     at com.example.gpstracking.LocationActivity$GetWeatherDetails0.onPreExecute(LocationActivity.java:177)
11-16 16:36:01.949: E/WindowManager(24204):     at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
11-16 16:36:01.949: E/WindowManager(24204):     at android.os.AsyncTask.execute(AsyncTask.java:534)
11-16 16:36:01.949: E/WindowManager(24204):     at com.example.gpstracking.LocationActivity.onCreate(LocationActivity.java:133)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.Activity.performCreate(Activity.java:5372)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2270)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2362)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.ActivityThread.access$700(ActivityThread.java:168)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1329)
11-16 16:36:01.949: E/WindowManager(24204):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-16 16:36:01.949: E/WindowManager(24204):     at android.os.Looper.loop(Looper.java:176)
11-16 16:36:01.949: E/WindowManager(24204):     at android.app.ActivityThread.main(ActivityThread.java:5493)
11-16 16:36:01.949: E/WindowManager(24204):     at java.lang.reflect.Method.invokeNative(Native Method)
11-16 16:36:01.949: E/WindowManager(24204):     at java.lang.reflect.Method.invoke(Method.java:525)
11-16 16:36:01.949: E/WindowManager(24204):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)
11-16 16:36:01.949: E/WindowManager(24204):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)
11-16 16:36:01.949: E/WindowManager(24204):     at dalvik.system.NativeStart.main(Native Method)

Upvotes: 0

Views: 350

Answers (1)

greenapps
greenapps

Reputation: 11224

Remove the runOnUiThread's from all doInBackground's. And do not start other AsyncTasks in doInBackground. Rethink your design and aproach.

Upvotes: 1

Related Questions