Android ProgressDialog inside another dialog

Ask by : La bla bla November 06, 2012 06:17

I'm working on a game using AndEngine, and I need to show the users the list of his Facebook friends. I've created my custom Adatper for the ListView and after the loading finishes everything works great. I have a problem with the loading part it self.

The ListView is inside a custom dialog, So inside this dialog, I'm running an AsyncTask to fetch the friends' info, in that AsyncTask I have a ProgressDialog. The problem is, the ProgressDialog shows up behind the dialog that contains the to-be list (which while loading, is just the title). I can see the ProgressDialog "peeking" behind that dialog.. Any Ideas?

Here's some code:

private ProgressDialog dialog;

//Constructor of the AsyncTask
public FriendsLoader(Context context) {
    dialog = new ProgressDialog(context);
    dialog.setMessage("Please wait..\nLoading Friends List.");

protected void onPreExecute() {
    LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    dialog.setView(inflater.inflate(R.layout.loading, null));
    dialog.setMessage("Please wait..\nLoading friends.");;

protected void onPostExecute(ArrayList<HashMap<String, Object>> data) {
    if (dialog.isShowing()) {
    MyAdapter myAdapter = new MyAdapter(context, data);
    listView = (ListView) findViewById(;
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        public void onItemClick(AdapterView<?> myAdapter, View myView, int myItemInt, long mylng) {
            String id = (String) listView.getItemAtPosition(myItemInt);
View original question

Answer by : UdinicNovember 06, 2012 01:02

Opening a dialog from another dialog is not the best idea, especially if one of them is a progress dialog (try to rotate the screen..).

I suggest a better approach:

The friends dialog will have 2 views: ListView and a ProgressBar. The ListView will be invisible when you load the data, and the ProgressBar will be visible at the time. When you'll finish loading the data, just switch the visibility between those 2 views.

For a smoother transition between those views, you can use ViewAnimator, which takes care of the visibility modes and even allows you to add an effect to the transition (e.g. fade, slide etc.). It's very simple to use and there are lots of examples online.

Best of luck!

View original answer