2014-02-20 56 views
0

在我的android應用程序中,我必須在第一次運行時通過在線服務器加載數據。但是在啓動屏幕之後,加載欄應該以黑色背景顯示。但是當我在做時,它會顯示進度條背後的內容。我想要的只是顯示進度條(帶有黑色背景),直到數據被下載。Android:AsyncTask和get()的結合

這裏是我的mainactivity.java

public class MainActivity extends Activity { 



@Override 
protected void onCreate(Bundle savedInstanceState) { 

    task myTask = new task(); 

    myTask.execute(); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //other code 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    //getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

class task extends AsyncTask<String, Integer, String> { 

    private ProgressDialog progressDialog; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     progressDialog=new ProgressDialog(MainActivity.this, android.R.style.Theme_Translucent_NoTitleBar); 
     progressDialog.setMessage("Loading..."); 
     progressDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      Thread.sleep(20000); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     return null; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     if(progressDialog!=null) 
      progressDialog.dismiss(); 
    } 
} 
} 

那麼的代碼,而複製粘貼一些支架可以出了錯。

但是請放心,代碼運行良好,問題是背景隨加載屏幕一起加載。我已經瞭解get()方法來停止正在加載的進程。但是這也阻止了加載欄的視圖。

請幫忙。或者有其他方法建議嗎?

回答

1

onCreate()中刪除setContentView()並將其放在的最後。

+0

謝謝!儘管我嘗試過..但是我想我弄亂了我的drawables,在將setcontentview移動到postexecute時給我一個錯誤。只是重新制作了一個新的應用程序n測試。作品完美。要再做一次整潔的項目! :) –