SORU
4 Temmuz 2012, ÇARŞAMBA


Parça onResume () ve onPause() backstack aranan.

Bir faaliyet içinde birden fazla parça var. Düğmeye bir tıklama yeni bir bölümü başlıyor, bu backstack için ekliyorum. Ben de doğal olarak geçerli Parça onPause() yöntem ve yeni Parça onResume() denilen olması bekleniyor. İyi şeyler olmuyor.

LoginFragment.java

public class LoginFragment extends Fragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      final View view  =   inflater.inflate(R.layout.login_fragment, container, false);
      final FragmentManager mFragmentmanager =  getFragmentManager();

      Button btnHome  = (Button)view.findViewById(R.id.home_btn);
      btnHome.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view){
           HomeFragment fragment    = new HomeFragment();
           FragmentTransaction ft2   =  mFragmentmanager.beginTransaction();
           ft2.setCustomAnimations(R.anim.slide_right, R.anim.slide_out_left
                    , R.anim.slide_left, R.anim.slide_out_right);
           ft2.replace(R.id.middle_fragment, fragment);
           ft2.addToBackStack(""); 
           ft2.commit();    
         }
      });
  }

  @Override
  public void onResume() {
     Log.e("DEBUG", "onResume of LoginFragment");
     super.onResume();
  }

  @Override
  public void onPause() {
    Log.e("DEBUG", "OnPause of loginFragment");
    super.onPause();
  }
}

HomeFragment.java

public class HomeFragment extends Fragment{
  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     final View view  =   inflater.inflate(R.layout.login_fragment, container, false);
  }

  @Override
  public void onResume() {
     Log.e("DEBUG", "onResume of HomeFragment");
     super.onResume();
  }

  @Override
  public void onPause() {
     Log.e("DEBUG", "OnPause of HomeFragment");
     super.onPause();
  }
}

Beklediğim gibi oldu,

  1. Düğmeye tıklandığındaLoginFragmentyerini alır HomeFragment, onPause()LoginFragmentve onResume() HomeFragmentçağrılır
  2. Tekrar basıldığındaHomeFragmentpoped veLoginFragment. görülen ve onPause()HomeFragmentve onResume()LoginFragment çağrılır.

Alıyorum

  1. Düğmeye tıklandığındaHomeFragmentdoğru yerini almaktadır LoginFragment, onResume ()HomeFragmentdenir, ama()onPause LoginFragmenthiç denir.
  2. Tekrar basıldığındaHomeFragmentdoğru şekilde ortaya çıkarmak için haşhaş LoginFragment, onPause ()HomeFragmentçağrılır, ama()onResume LoginFragmenthiçbir zaman çağrılır.

Bu normal bir davranış mı? Neden onResume()LoginFragmentalmıyorum Geri düğmesine bastığımda aradı.

CEVAP
27 NİSAN 2013, CUMARTESİ


Parçaları onResume() onPause() Faaliyetleri onResume() onPause() çağrıldığında sadece adı verilecek. Sıkıca Activity ile birleştiğinde.

Handling the Fragment Lifecycle section of this article okuyun.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • apenney888

    apenney888

    27 EKİM 2010
  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008