Показать ProgressDialog при загрузке макета с помощью setContentView

Это мой сценарий: у меня есть экран входа в систему, который открывает другое действие. В Activity у меня просто:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_details);
}

Макет довольно тяжелый , потому что он состоит из нескольких фрагментов и загружается примерно за 1,5 секунды. Теперь, как я могу отобразить ProgressDialog , пока setContentView завершает заполнение макета? Я пробовал использовать AsyncTask , поместив setContentView в doInBackground , но, конечно, это невозможно, так как пользовательский интерфейс можно обновить из потока пользовательского интерфейса. только. Поэтому мне нужно вызвать setContentView в потоке пользовательского интерфейса, но где мне показать / закрыть ProgressDialog ?

Я ценю вашу помощь.

Fra.

] РЕДАКТИРОВАТЬ: Я последовал предыдущему предложению @ JohnBoker, это код, который у меня есть сейчас:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_empty_layout);
    new ContentSetterTask().execute("");
}

private class ContentSetterTask extends AsyncTask<String, Void, Void> {

    public ProgressDialog prgDlg;

    @Override
    protected void onPreExecute() {
        android.os.Debug.waitForDebugger();
        prgDlg = ProgressDialog.show(MultiPaneActivity.this, "", "Loading...", true);

    }

@Override
protected Void doInBackground(String... args) {
    android.os.Debug.waitForDebugger();
    ViewGroup rootView = (ViewGroup)findViewById(R.id.emptyLayout);
    LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View inflated = inflater.inflate(R.layout.activity_details, rootView);
    return null;
}

@Override
protected void onPostExecute(Void arg) {
    android.os.Debug.waitForDebugger();
    if (prgDlg.isShowing())
        prgDlg.dismiss();
    }
  }
}

Строка

View inflated = inflater.inflate(R.layout.activity_details, rootView);

дает мне ошибку:

06-27 16:47:24.010:   
ERROR/AndroidRuntime(8830): Caused by:android.view.ViewRoot$CalledFromWrongThreadException: 
Only the original thread that created a view hierarchy can touch its views.
12
задан Stanojkovic 17 February 2016 в 16:52
поделиться