0

내 ProgressDialog는 oncreate 메소드에서 show()를 사용할 경우 작동합니다. 내가 비동기 작업에서 사용하는 경우 자사가 만들지에 있기 때문에진행 대화 상자가 레이아웃 onPreExecute() 위에 팽창합니까?

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     pd = ProgressDialog.show(this, "Working", "Retreiving Neaby Restaurants", true, true); // initializes the progress dialog 
     pd.setCanceledOnTouchOutside(false); // on newer versions of android touching outside of the screen will close the dialog. I decided to make it only cancelable when the back button is pressed. 
     setContentView(R.layout.nearby_places_list); 

그러나, 대화 코드가 늘 작동(). 가지 인자를 (이, "작업", "불러 오는 Neaby 레스토랑"사실, true)를 표시하는 것은에서 onCreate()의 외부에서만 허용 ARNT :

class MyAsync extends AsyncTask<Void, Integer, Boolean>{ // this task is for populating the listview 

     @Override 
     protected void onPreExecute() { 
      //ProgressDialog.show(context, "Working", "Retreiving Neaby Restaurants"); 
      pd = ProgressDialog.show(this, "Working", "Retreiving Neaby Restaurants", true, true); // initializes the progress dialog 
      pd.setCanceledOnTouchOutside(false); // on newer versions of android touching outside of the screen will close the dialog. I decided to make it only cancelable when the back button is pressed. 
     } 

이것은 시작에 내가 대화 상자를 보여주고 싶었 기 때문에 다소 열받은입니다 비동기 작업이 아니라 해당 작업이 호출되기 훨씬 전입니다.

내 질문에 어떻게 비동기 작업을 onPreExecute() 내 사용자가 실제로 비동기 작업을 사용하여 시작할 때까지() 표시 할 싶지 않아이 작업을 수행 할 수 있습니다.

답변

1

onPreExecute()

에서 사용

pd = ProgressDialog.show(yourActivitName.this, "Working", "Retreiving Neaby Restaurants", true, true); 

실제로 활동의 Context입니다. 앞으로 자주 사용해야 할 중요한 것.

또한

activityContext Class level variable문맥을이

activityContext=this

처럼 onCreatesetContentView 후 초기화 한 후 당신은 또한 사용할 수 있습니다

pd = ProgressDialog.show(activityContext, "Working", "Retreiving Neaby Restaurants", true, true);

+1

완벽한 대답과 설명. 내가이 사이트에서 보는 데 익숙한 것이 아닙니다. 고맙습니다! –