slr560
دوشنبه 19 آبان 1393, 01:31 صبح
سلام دوستان
من توی برنامم یک نویگیشن دارم که به محض اینکه روی هر کدوم از آیتم ها کلیک شد متناسب با اون یک فرگمنت داخل container میزارم و نمایش میدم. کامل و درست هم کار میکنه
فقط یه مشکل امروز توش پیدا کردم . به طور تصادفی توی کلاس هر کدوم از فرگمنت ها اومدم متدهای OnResume , OnStop , OnPause رو Override کردم و لاگ گزاشتم که ثبت بشه و دیدم که با کمال تعجب وقتی یک شی از فرگمنت ها میسازم به شکل لاگ زیر نمایش میده
11-10 02:06:20.731 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnResume
11-10 02:06:20.741 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnPause
11-10 02:06:20.741 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnStop
11-10 02:06:20.801 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnResume
یعنی اول میاد OnResume رو صدا میزنه و سریع بعد از اون OnPause و بعدش OnStop و در آخر میاد OnResume رو صدا میزنه. این چرا اینجوری میشه؟؟؟ :لبخند:
select نویگیشن به شکل زیر هست:
@Override
public void onNavigationDrawerItemSelected(int position) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
switch (position) {
case 0:
fragmentTransaction.replace(R.id.container, new InfoFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 1:
fragmentTransaction.replace(R.id.container, new ParentOtoFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 2:
fragmentTransaction.replace(R.id.container, new ParentProFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 3:
fragmentTransaction.replace(R.id.container, new SupportFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 4:
fragmentTransaction.replace(R.id.container, new AboutFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
}
}
فرگمنت هایی هم که صدا میزنم به این صورت نوشتم:
public class InfoFragment extends Fragment {
public InfoFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_info, container, false);
}
کسی میدونه چرا اینجوری میشه؟؟؟؟
من توی برنامم یک نویگیشن دارم که به محض اینکه روی هر کدوم از آیتم ها کلیک شد متناسب با اون یک فرگمنت داخل container میزارم و نمایش میدم. کامل و درست هم کار میکنه
فقط یه مشکل امروز توش پیدا کردم . به طور تصادفی توی کلاس هر کدوم از فرگمنت ها اومدم متدهای OnResume , OnStop , OnPause رو Override کردم و لاگ گزاشتم که ثبت بشه و دیدم که با کمال تعجب وقتی یک شی از فرگمنت ها میسازم به شکل لاگ زیر نمایش میده
11-10 02:06:20.731 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnResume
11-10 02:06:20.741 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnPause
11-10 02:06:20.741 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnStop
11-10 02:06:20.801 28528-28528/com.daneshjuo.daneshjo D/SupportFragment﹕ OnResume
یعنی اول میاد OnResume رو صدا میزنه و سریع بعد از اون OnPause و بعدش OnStop و در آخر میاد OnResume رو صدا میزنه. این چرا اینجوری میشه؟؟؟ :لبخند:
select نویگیشن به شکل زیر هست:
@Override
public void onNavigationDrawerItemSelected(int position) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
switch (position) {
case 0:
fragmentTransaction.replace(R.id.container, new InfoFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 1:
fragmentTransaction.replace(R.id.container, new ParentOtoFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 2:
fragmentTransaction.replace(R.id.container, new ParentProFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 3:
fragmentTransaction.replace(R.id.container, new SupportFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
case 4:
fragmentTransaction.replace(R.id.container, new AboutFragment());
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
}
}
فرگمنت هایی هم که صدا میزنم به این صورت نوشتم:
public class InfoFragment extends Fragment {
public InfoFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_info, container, false);
}
کسی میدونه چرا اینجوری میشه؟؟؟؟