2012-12-07 32 views
0

我在调用MainActivity的时候会产生一个加载效果。我不知道为什么我的Dialog.show在AsyncTask中不起作用。我只是看到了它刚刚消失的瞬间,但对话从来没有出现过。 谢谢。我的Dialog.show()不起作用

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    new LoadViewTask().execute(); 
    setContentView(R.layout.activity_main); 
....} 



private class LoadViewTask extends AsyncTask<Void, Integer, Void> 
{ 
    @Override 
    protected void onPreExecute() { 
     progressDialog = ProgressDialog.show(MainActivity.this,"Loading...","Loading application View, please wait...", false, false); 

    } 

    @Override 
    protected Void doInBackground(Void... params) 
    { 
     try 
     { 
      synchronized (this) 
      { 
       int counter = 0; 
       while(counter <= 4) 
       { 
        this.wait(1000); 
              counter++; 
        publishProgress(counter*25); 
       } 
      } 
     } 
     catch (InterruptedException e) 
     { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Integer... values) 
    { 
     progressDialog.setProgress(values[0]); 
    } 

    @Override 
    protected void onPostExecute(Void result) 
    { 
     progressDialog.dismiss(); 
    } 


} 
+0

你的代码工作我这边可以发表你充分的活动代码。 –

回答

0

尝试启动您的异步任务前设置的内容视图:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Set the content view first 
    setContentView(R.layout.activity_main); 
    new LoadViewTask().execute(); 
....} 
+0

我试过这个,但它仍然没有显示... –

+0

@DannyHo我在Android 2.3.3和Android 4.1.2设备上测试了您的代码,并且对话框在两台设备上都出现并正确消失。你能否给我们提供更多的细节,也可能是你的'MainActivity'的完整代码? –

+0

实际上我测试过它会在Android 2.3.3上正常工作,但不是4.1.2。我的主要活动中提醒代码是一个HttpPostHandler,你认为由此造成的问题? –