2012-10-09 51 views
4

我是新來的Android,我只有7天前纔開始。我遇到了這種類型的錯誤,並且在同一個論壇中也提到了大部分的主題,並提出了類似的問題,但沒有得到解決。MainActivity已泄露窗口

這裏是我的代碼:

class CreateNewCustomer extends AsyncTask<String, String, String> { 

     @Override 
     protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(MainActivity4.this); 
       pDialog.setMessage("Creating Customer.."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(true); 
       pDialog.show(); 
     } 

     @Override 
     protected String doInBackground(String...args) { 
       String fname = inputFName.getText().toString(); 
       String lname = inputLName.getText().toString(); 
       String phone = inputPhone.getText().toString(); 

       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("fname", fname)); 
       params.add(new BasicNameValuePair("lname", lname)); 
       params.add(new BasicNameValuePair("phone", phone)); 
       JSONObject json = jsonParser.makeHttpRequest(url_create_customer, 
                  "POST", params); 
       Log.d("Create Response", json.toString()); 

       try { 
         int success = json.getInt(TAG_SUCCESS); 
         if (success == 1) { 
           Intent i = new Intent(getApplicationContext(),MainActivity5.class); 
           startActivity(i); 
           finish(); 
         } else { 
           // This is the Else part 
         } 
       } catch (JSONException e) { 
         e.printStackTrace(); 
       } 
       return null; 
     } 

     @Override 
     protected void onPostExecute(String file_url) { 
       pDialog.dismiss(); 
     } 

} 
+0

這種錯誤來當你創建一個彈出式對話框或某種窗口,然後不刪除進度對話框後,它和你的活動closes.What是你的場景?你能否增加一些解釋。 –

+0

嘗試檢查progressdialog.isshowing()是否顯示和解散時。 – darshanz

回答

3

在這一部分:

if (success == 1) { 
    Intent i = new Intent(getApplicationContext(), 
          MainActivity5.class); 
    startActivity(i); 
    finish(); 
} 

你打電話finish()你需要關閉該進度對話框之前。它並沒有被解僱,因此這個窗口正在泄露,並導致一個例外。

使用此代碼來代替:

if (success == 1) { 
    Intent i = new Intent(getApplicationContext(), MainActivity5.class); 
    startActivity(i); 
    pDialog.dismiss(); 
    finish(); 
} 

此外,從onPostExecute(),不doInBackground()啓動新的活動。使用標誌來檢查你的活動成功,並開始了新的活動onPostExecute()這樣的:

@Override 
protected String doInBackground(String...args) { 
    //... 
    if (success == 1) { 
     successFlag=true; 
    } 
    //... 

} 

@Override 
protected void onPostExecute(String file_url) { 
    if(successFlag=true) { 
     Intent i = new Intent(getApplicationContext(), MainActivity5.class); 
     startActivity(i); 
     pDialog.dismiss(); 
     finish(); 
    } 
} 
+0

你好,謝謝,但仍然沒有工作..它正在停止我的應用程序像以前一樣..任何其他建議..? –

+0

你好Anup Cowkur ..非常感謝你..它正在工作..但有一個問題抱歉..有些時候它工作正常,有些時候它給錯誤相同..爲什麼它發生..你可以給任何建議.. ??正如昨天面臨同樣的問題並感到沮喪......那麼當時該怎麼辦?有些時間工作,有些時候給同樣的錯誤,並停止應用程序.. :( 因爲它發生在一段時間..它不工作..和重新啓動後,它的工程沒有停止的應用程序..所以任何幫助將是偉大的我.. –

+1

對於你提供的代碼,我的解決方案是正確的,我相信,請發佈任何更多的錯誤,你作爲另一個問題,以便我們可以幫助你,它也會幫助別人。 :-) –

0

在doInBackground決不做一個startActivity()。

執行startActivity您駁回onPostExecute()

+0

我已經做了同樣的..已經從嘗試塊刪除開始活動,並在關閉對話框後添加到onPostExecute ...但它不能幫助應用程序像以前一樣停止.. :( –

+0

日誌說什麼? – nithinreddy

相關問題