2013-04-11 25 views
8

Ben bir uyarı iletişim kutusunda kullanıcı presler "Evet" ve bu bir kapandığında, o olay kullanıcı halinde olduğu aktivitenin onResume yöntemi yürütür olmadığını bilmek istiyorum.Android'de bir uyarı reddedildikten sonra Call onResume yöntemi mi kullanılıyor?

Bir "Temiz olduğundan "boş alanlarla aktiviteyi yeniden çizmek için formun tüm alanlarını (etkinlik) temizlediğinden gerçekten emin olup olmadığını soran düğme. Form dinamik olarak oluşturulur, bu yüzden önsel öğeleri bilmiyorum GUI içinde onları ayarlamak için ...

Kötü ingilizce için özür dilerim!

Teşekkürler ve Selamlar!

+0

Kullanıcı bir şey yaptığında algılamak isterseniz, düğmeyi olumlu yönde başlatmak için başlangıçta false olacak ve true olacak şekilde boolean kullanabilirsiniz. –

cevap

15

emin değil anlamak çok önemlidir Alınan, ama istediğini düşündüğün şeyi yapabilmelisin. Eğer bir nedenden ötürü, bu başarmak istediğiniz şeydir.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Do you want to clean?") 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
      ((ActivityName) appContext).onResume(); 
     } 
     }) 
     .setNegativeButton("No", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
     } 
     }); 
    builder.create().show(); 
} 

Gerçekten bir başarısızlık üzerinde hiçbir şey yaparken yerine başarısı üzerinde yaşam döngüsü çağrısı gibi bir şey sizin temiz işlevini çağırıyor isteyecektir.

Buna yaklaşmanın başka bir potansiyel yolu, mevcut aktiviteyi bayrakları kullanarak öne geri getirmektir. belirttiği gibi aynı zamanda, doğrudan onResume() çağrısı başvuran olmadan ana faaliyeti üzerine aramak için bir yol sağlayacak

Intent intent = new Intent(this, CurrentlyRunningActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

uygun bir yaklaşım değildir; Ancak, sorulan soruya doğrudan cevap vermek istedim.

+4

'onResume' öğesini manüel olarak çağırmak * kesinlikle hiçbir şekilde * –

0

AFAIK İletişim kutusunun görüntülenmesi için etkinliğin öncedenResResume durumunu geçmiş olması nedeniyle bu mümkün değildir. ,

App lifecycle

+0

Yani, söylediğiniz şey, uyarı ekranda görüntülendiğinde, etkinliğin arka plan üzerinde olmasına neden olmamasıdır. Hala ön planda mı? –

+0

@alois.wirkes Bu emin değilim ki iyi bir soru. Ancak bence codeMagic'in cevabına bir göz atmalısınız. Öğeleri temizlemek için düzenleri yeniden çizmemelisiniz, ancak setText() işlevini kullanmalısınız. Sadece diyalogun evet düğmesine, istediğiniz kadar temizlemeyi sağlayan bir yöntem çağırın. – TronicZomB

0

Emin değilseniz onResume çağrıldığında içine bir günlük ekleyin: (gerçekten beni daha iyi anlamama yardımcı) bir Android uygulamasında yaşam döngüsü hakkında daha fazla bilgi için şu sayfaya göz atın onResume yöntemi.

1

Bir yöntemin çağrılıp çağrılmadığını görmek için, ne olacağını görmek için onResume() yöntemine bir kesme noktası koyabilirsiniz. Eğer Acitvity Lifecycle ile aşina değilseniz, bunu yapmanız size yardımcı olacak ve verilen belgeleri okuyacaktır.

Şimdi, tüm layout ürününü yalnızca Views temizlemek için yeniden çizmeniz gerektiğini düşünmüyorum. Benim düşünceme göre, setText() kullanarak ya da kullanıcı "Tamam" ya da her neyi tıklattığında ihtiyaç duyduğunuz her şey için başka bir yöntem kullanarak tüm alanları sıfırlamak daha etkili olur. Eğer Views

belli yeniden çizme gerekiyorsa ben de

Google I/O-Turbo Charge Your UI izlerken tavsiye invalidate() kullanabilirsiniz

Activity LifeCycle < - Bu olmalı yaklaşım ise