Kullanıcılarımın çok azı için çok kafa karıştırıcı bir sorunla karşı karşıyayım. Hata, bir Parçanın içine başka bir Parçalı Etkinlik başlatan bir düğmeye basıldığında oluşur. Nedeniyle hata bu çizgiyeParça Etkinliği - uygulama öldü, kaydedilmiş durum yok
I/20:22:23.901 ActivityManager(1668)
Start proc com.brandall.nutter for activity com.brandall.nutter/.ActivityHomeFragment: pid=8956 uid=10125 gids={50125, 3003, 3001, 3002, 1015, 1023, 1006, 1028}
I/20:22:23.881 WindowState(1668)
WIN DEATH: Window{41ed1948 u0 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment}
W/20:22:23.881 ActivityManager(1668)
Force removing ActivityRecord{411c4188 u0 com.brandall.nutter/.ActivityLinkAppsFragment}: app died, no saved state
I/20:22:23.881 WindowState(1668)
WIN DEATH: Window{41b6a178 u0 Toast EXITING}
W/20:22:23.881 InputDispatcher(1668)
Attempted to unregister already unregistered input channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)'
W/20:22:23.871 ActivityManager(1668)
Scheduling restart of crashed service com.brandall.nutter/.TTSS in 80000ms
I/20:22:23.871 ActivityManager(1668)
Process com.brandall.nutter (pid 8907) has died.
I/20:22:23.871 WindowState(1668)
WIN DEATH: Window{411d4ff0 u0 com.brandall.nutter/com.brandall.nutter.ActivityHomeFragment}
E/20:22:23.871 InputDispatcher(1668)
channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)' ~ Channel is unrecoverably broken and will be disposed!
W/20:22:23.871 InputDispatcher(1668)
channel '41ed1948 com.brandall.nutter/com.brandall.nutter.ActivityLinkAppsFragment (server)' ~ Consumer closed input channel or an error occurred. events=0x9
: Burada yığın izlemesi
com.brandall.nutter/.ActivityLinkAppsFragment}: app died, no saved state
Ben Fragment kaydedilen durumları hakkında birçok mesaj okuma oldum, ama hiçbiri daha doğrusu, benim koşullarda uygulamak gibi görünüyor Yığın izinde belirtilmeyen Fragmentlerin kendilerine. Diğer mesajlar her Fragment eklemenizi öneririz:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
Şu anda benim Fragments hiçbirinde onCreate yöntemini geçersiz kılmaz.
Ben de her Fragment bu ekleyerek önerdi gördüm: Bunun dışında sadece kullanıcıların çok az sayıda oluyor olmasından
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
}
, en şaşırtıcı konu kullanılan Bağlam ile geçerli:
final Intent sa = new Intent(getActivity(), ActivityLinkAppsFragment.class);
getActivity().startActivity(sa);
Benim uygulamanın ön plan hizmeti vardır ve bunun yerine yukarıda Niyet içinde (statik getServiceContext() yöntemi yoluyla) o statik Bağlam kullanırsanız, sorun artık Fragment Etkinliği doğru açılır kullanıcılar ve için oluşur .
Başka bir Bağlamın kullanılmasının neden sorunun olmasını önlemesi gerektiğini anlamıyorum, ancak sağladığım bilgilerle ilgili olarak birilerinin mantıklı olacağını umuyorum!
FragmentPagerAdapter kodunu, ilgili olduğunu kanıtlıyorsa kullanıyorum, ancak oldukça standart bir şekilde sağlayabilirim. Ben eklemek unuttum çok önemli bir şey -
önceden
DÜZENLEME teşekkür ederiz. Bu, uygulamanın çökmesine neden olmaz. Bunun yerine, Parçanın bulunduğu Etkinlik, hemen yeniden başlatılır.
CEVAP - Kullanıcı uygulamanın 'floş' bellek kullanımı istediğinde beni şartlar altında System.exit(0)
çağrılmasına sadece olası düşünce nedeniyle bu neden oldu. Yanlışydım ve kullanıcının cihazının düşük bellek koşullarına sahip olduğunda da çağrılabilir. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Eğer 'Aktivite' içinde bir dinleyicinin kaydedilmesi ve orada 'startActivity' işleminin yapılması için önerilen deseni kullanırsanız, bu hala devam ediyor mu?'Fragmanlar' hiçbir zaman kendi aktivitelerine başlamamalıdır çünkü bir Aktivitenin başlatılıp başlatılmayacağını veya bir Parçanın eklenip eklenmeyeceğini bilmeleri için bir yol yoktur. Ayrıca, neden burada Intent.FLAG_ACTIVITY_NEW_TASK kullanılıyor? –
@PaulBurke Bayrak orada olmamalı - Yanıltıcı olduğum için üzgünüm, testlerimde kaldığı için sorudan kaldırırım. Faaliyetlerimi çok basit bir yığın olarak ele aldığımda, asla 'başlatılmaları' gerekip gerekmediğini düşünmek zorunda kalmamıştım. Açıkladığınız dinleyici yaklaşımını arayacağım. Teşekkür ederim. – brandall
@brandall, Fragment'ın onClick() 've yaşam döngüsü yöntemlerini paylaşabilir misiniz? –