2016-04-11 26 views
0

Bu kod parçacığı:(popBackStackImmediate karıştığı ve geri basma)

@Override 
public void onBackPressed() { 
    if(!getFragmentManager().popBackStackImmediate()) super.onBackPressed(); 
} 

bu ne demek oluyor? Ben docs baktım ve

diyor "popBackStack (int, int) gibi, ama hemen çağrısı içindeki işlemini gerçekleştirir. Bu sonradan executePendingTransactions() çağırarak gibidir."

Ama bunun ne anlama geldiğini bilmiyorum, ya da onun önünde olumsuzlamasıydı, ya da ne super.onBackPressed() yapıyor olması ne anlama geldiğini.

+0

olumsuzluk karşısında eğer getFragmentManager(). popBackStackImmediate() == true o zaman yaparsanız! getFragmentManager(). popBackStackImmediate() == false zaten anlamı olumsuzlamasıydı şu ve için cihazınızın onun geri düğmesine super.onbackpressed: dışarı yorumlama deneyin Ge ve geri düğmesine basın ve hiçbir şey elde –

+0

olur [dokümantasyon] (http://developer.android. com/reference/android/app/FragmentManager.html # popBackStack% 28% 29) popBackStackImmediate(): Arka yığının üst durumunu kapatın. Bu işlev eşzamansızdır - isteğin pop olacağını belirtir, ancak uygulama olay döngüsüne dönene kadar eylem gerçekleştirilmez. ve super.onBackPressed(), defualt yöntemini çağırıyor. –

+0

Peki, bu ne anlama geliyor? Geri dönmek için bir şey varsa, geri dönün? GetFragmentManager(). PopBackStackImmediate() 'nin yanlış olması için ne anlama geldiğini bilmiyorum. –

cevap

0

Haşlanmış bir şey olsaydı, true değerini döndürür.

Temelde size backstack haşhaş (tarihi üzerine parçalarını temizlerken, bu nedenle geri gittiğinizde son fragman gitmeyecek) ve gidecekseniz backstack (tarihi üzerine hiçbir parçası) üzerinde hiçbir parçası eğer size senin super.backPressed yapacak. super.onBackpressed() etkinliğinizBackPressed üzerinde çalışır (bu kod bir parçadan çağrılmış olsa bile, onBackPressed() parçanızda öntanımlı kod yoktur.) Etkinliğiniz varsayılan bir Android etkinliğini uzatırsa gidecekseniz yok eğer geri son etkinliğe, gidecekseniz bir eğer, os, app çıkmak

yalancı kod:. Bu geri almak için kullanıcı yapamaz yapmaya çalışıyordu yapılan

Muhtemelen
popBackStack() // clear the fragment history 
if (somethingWasPopped) { 
super.backPressed() // this will do what i said above 
} 

geliştirici Geriye bastığında son parçaya kadar Aktivite1 -> Aktivite 2 (fragman A -> frag B -> fragman C) Şimdi, kullanıcı C fragmanında, Aktivite 1'e geri dönecektir. yerine frag B'nin geri ikonuna Tran),

+0

Peki, aslında ne diyor? Değilse (bir şey), geri dönün mü? –

+0

Yanıtıma bakın. – sagits