2013-07-09 43 views
0

i'm坐在FOT小時,現在得到運行progressdialog ....調用異步任務... progressdialog apears活動後已切換到另一個活動

我看了一下這樣的例子很多這裏在stackoverflow和其他網站。

問題:

I'm把一個進度對話框的活動,當按下一個按鈕把它交給一個異步任務。 當按鈕被按下時,活動顯示約2-3秒,沒有進度對話框,在切換到其他活動後,進度對話框顯示並在異步任務完成後終止。 Coreographer告訴我,這主要活動..喇嘛喇嘛..

// Get Position Button 
    getPosition = (Button) vg.findViewById(R.id.getPosition); 
    getPosition.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      if (isAirplaneModeOn(PositionActivity.this) != true) { 
       try { 
        // System.out.println("Airplanemode off!"); 
        if (gpsFunc.canGetLocation()) { 
         SharedPreferences gps = PositionActivity.this 
           .getSharedPreferences(prefName, 
             Context.MODE_PRIVATE); 
         String latlon = gps.getString("coordinates", null); 

         if (latlon != null) { 
          String[] split = latlon.split(";"); 
          callWienerLinien(); 
          latitude = Double.parseDouble(split[0]); 
          longitude = Double.parseDouble(split[1]); 
          pressed = (TextView) vg 
            .findViewById(R.id.pressed); 
          long start = new Date().getTime(); 
          TabActivity tabs = (TabActivity) getParent(); 
          tabs.getTabHost().setCurrentTab(1); 
          long end = new Date().getTime(); 

          System.out.println(end-start); 

         } else { 
          pressed.setText("Bitte Position setzen."); 
         } 
        } else { 
         buildAlertMessageNoDataNetwork(); 
        } 
       } catch (Exception e) { 
        errorOccuredMessage(); 
       } 
      } else { 
       pressed.setText("Bitte Flugzeugmodus deaktivieren."); 
      } 
     } 

    }); 

public void callWienerLinien(){ 
    ProgressDialog pd = new ProgressDialog(this); 
    pd.setMessage("Loading ..."); 
    pt = new PublicTransport(pd,this); 
    pt.execute("http://webservice.qando.at/2.0/webservice.ft"); 
} 

這是異步任務

public PublicTransport(ProgressDialog pd,Context context){ 
    this.pd = pd; 
    this.context = context; 
    getLatLonDestination(); 
    getLatLonOrigin(); 
} 



    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     System.out.println("onpre"); 
     pd.show();   
    } 


     @Override 
    protected void onPostExecute(ArrayList<PublicTransportBean> al) { 
     System.out.println(al.get(0).getTripDuration()); 
     System.out.println("onpostExec"); 
     pd.dismiss(); 
    } 
+0

getLatLonDestination()和getLatLonOrigin()是什麼?是否需要很長時間? –

+0

嗨....他們得到gps coords ....它需要2毫秒 – xlarge74

回答

1

不要內螺紋顯示Progressdialog,在其中運行的背景任務。我有同樣的問題,也做了以下內容:

  1. 準備對話框
  2. 顯示對話框
  3. 啓動後臺任務

編輯:

嘗試調用ProgressDialog爲如下:

 runOnUiThread(new Runnable() {    
      @Override 
      public void run() { 
      final ProgressDialog progressDialog=new ProgressDialog(cont); 
      progressDialog.setMessage("Progress"); 
      progressDialog.show(); 
      } 
     }); 
+0

你好..感謝您的快速回答...我現在顯示對話框之前,我執行異步任務....同樣的事情:-(...活動被凍結 - - >活動切換到其他活動 - >對話框顯示 – xlarge74

+0

我編輯了我的答案,並希望這最終能爲你解決問題。 – snrlx

+0

謝謝你試圖幫助我;-) ...我解決了它..見下文 – xlarge74

0

我解決了這個問題....

i'm調用

TabActivity tabs = (TabActivity) getParent(); 
        tabs.getTabHost().setCurrentTab(1); 
在異步任務的postexecute

。 工作完美.....兩行代碼和13小時學習:-(

+0

好吧,很高興你設法解決它,我想你可以接受你自己的答案,以向人們展示真正的解決方案。 – snrlx

+0

我試過;-)但它告訴我,我必須等待直到明天 ;-) – xlarge74

相關問題