একটি ক্রিয়াকলাপের ভিতরে আমার একাধিক টুকরো রয়েছে। একটি বোতামে ক্লিক করে আমি একটি নতুন টুকরা শুরু করছি, এটি ব্যাকস্ট্যাকে যুক্ত করছি। আমি স্বাভাবিকভাবেই প্রত্যাশা করেছি যে onPause()
বর্তমান খন্ডের পদ্ধতি এবং onResume()
নতুন খণ্ডটির কল করা হবে। ভাল হচ্ছে না।
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();
}
}
আমি যা আশা করেছিলাম, তা ছিল,
- যখন বাটনে ক্লিক না LoginFragment দিয়ে প্রতিস্থাপিত পরার
HomeFragment ,
onPause()
এর LoginFragment এবংonResume()
এর HomeFragment নামক পরার - যখন ফিরে টেপা না হলে, HomeFragment আউট poped হয় এবং LoginFragment , এবং দেখা যায়
onPause()
এর HomeFragment এবংonResume()
এর LoginFragment নামক পায়।
আমি যা পাচ্ছি তা হ'ল
- যখন বাটনে ক্লিক না HomeFragment সঠিকভাবে প্রতিস্থাপন করা হয় LoginFragment , onResume () এর HomeFragment বলা হয়, কিন্তু onPause (এর) LoginFragment কখনো বলা হয়।
- পিছনে চাপলে , হোমফ্র্যাগমেন্টটি সঠিকভাবে লগইনফ্রেগমেন্টটি প্রকাশের জন্য পপিং করছে , হোমফ্র্যাগমেন্টের অনপস () কল হয়ে যায়, তবে লগইনফ্রেগমেন্টের অনেসিউম () কখনই কল হয় না।
এটাই কি স্বাভাবিক আচরণ? কেন onResume()
এর LoginFragment বলা হয় না পেয়ে যখন আমি ফিরে বোতামটি টিপুন।