2011-02-15 18 views
7

Geliştiricilerin kendi onActivityResult kodunu yazmasını önlemek ve karmaşık iç ayrıntılarını kapsüllemek için bir Activity başlatmaya ve geri dönüş sonucuna (startActivityForResult) erişmek için bir yardımcı sınıf hazırlamaya çalışıyorum.ActivityResult Etkinliğin Dışından Çalıştırma

yani: arayanın kodu:

MyIntent i = new MyIntent(); 
i.getMyData(new OnData() { public void onData(Bundle data) {....}); 

Sadece onActivityResult geçersiz edebilmek için MyIntent içinde bir "kukla" Activity oluşturarak çalıştı, ancak etkinlik apaçık beyan edilmesi gerekir ne olduğunu yardımcı sınıf kaçmayı dener. İyi bir alternatif olacak "setOnActivityResult" yoktur.

Activity Programlı olarak nasıl oluşturulur ve geçerli duruma sahip olması için "iliştir"?

new Activity()'u oluşturduktan sonra, dahili "Etkinleştir" etkinliğini çağırmak istiyorum.

+0

Bu soruna çözüm buldunuz mu? – captaindroid

cevap

1

Peki, bir program nasıl oluşturulur ve geçerli bir duruma sahip olacak şekilde program aracılığıyla "eklenir"?

Bu mümkün değil, üzgünüm.

Bir Aktivite başlatmak ve kendi onActivityResult kod yazarken geliştiriciler önlemek için dönüş sonucu (startActivityForResult) almak ve karmaşık iç Ayrıntılar kapsülleyen bir yardımcı sınıf yapmaya çalışıyorum.

Bu mümkün değil, üzgünüm. Elde edebileceğiniz en yakın şey, Barkod Tarayıcı entegrasyonu JAR'nin nasıl çalıştığıdır - tarayıcı aktivitesinden elde edilen sonucu çözmek için onActivityResult() yetkilendirirsiniz.

+1

Aynı şeyi denemek için de çalışıyorum http://developer.android.com/reference/android/preference/PreferenceManager.OnActivityResultListener.html Özel sınıfta onActivityResult() yöntemini çağırmak için kullanıyorum ama değil Çalışıyor ... eğer bir fikrin varsa ... sonra plz post .. :) –

0

Basit bir geri dönüş alternatif olabilir mi? Kullanıcı kütüphanenizin statik alanında geri arama yapar ve kütüphaneniz gerektiğinde bu geri bildirimi çağırır. En basit uygulama olabilir:

staticCallbackField.onData(data) 

Kullanıcı etkinliği Paket veri yerine onActivityResult ait geri dönüşünde yer alacak:

YourSdk.staticCallbackField=new OnData() { public void onData(Bundle data) {....}); 
MyIntent i = new MyIntent(); 
startActivity(i); 

SDK o geri arama çağırır işi tamamlar

.

Olası etkinlik yaşam döngüsü sorunlarının farkında olmalısınız. Örneğin, android arka planda kullanıcı etkinliğini yeniden oluşturuyorsa, geri arama yeniden oluşturulmalıdır.

İlgili konular