کاربا فرگمنت و ویوپیجر
سلام.اگه بخوام از اکتیویتی به کنترل های داخل فرگمنت دسترسی داشته باشم باید چطوری این کار رو انجام بدم؟از inflater استفاده کردم بازم نشد
باید داخل pageradapter این کاررو انجام بدم؟
سلام. یکم سوالتون کلیه و راه های خیلی زیادی هست. من چند راهو میگم هرکدوم مناسب بود بگید.
1- استفاده از متد زیر
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
این متد به شما میگه کدوم فرگمنت سلکت شده، حالا شما میتونید پوزیشن مورد نظرتون رو به آداپتر پاس بدید و اون تغییرات رو اعمال کنه. اگر توی اداپترتون یک فرگمنت رو هربار میسازید، شاید جواب نده ولی اگر فرگمنت های مختلف رو میسازید خیلی مفیده.
2- روش رو عوض کنید، اگر میخواید با یک اتفاق از توی فرگمنت، کدی توی اکتیویتی انجام بشه، فقط کافیه توی اکتیویتی یک متد پابلیک بسازید و از توی فرگمنت به شکل زیر کال کنید. (متد حتما باید public باشه)
((MyActivity)getActivity()).onBackPressed();
اگر میخواید توی فرگمنت بدونید الان توی چه position ای هستید، 2 روش وجود داره. روش اول اینه که فرگمنت رو توی آداپتر به این شکل بسازید و پارامتر رو بهش پاس بدید:
توی آداپتر
return MyFrag.newInstance(position);
توی فرگمنت:
public static MyFrag newInstance(int pos) {
MyFrag fragment = new MyFrag();
Bundle args = new Bundle();
args.putSerializable("POSITION", pos);
fragment.setArguments(args);
return sectionSubFragment;
}
---------------------------------------
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
fragmentPosition = getArguments().getInt("POSITION");
}
}
راه دوم اینه که ایندکس فرگمنت رو بگیرید. برای این کار آداپتر حتما باید از FragmentPagerAdapter اکستندز شده باشه. اگر از State و ... استفاده کنید امکان داره null باشه. شما تگ رو میگیرید، کاراکتر های اخرش میشن پوزیشنش.
راه های زیادی هست. استفاده از استاتیک ها هم یک راه هست که من پیشنهاد نمیکنم. باز اگر این موارد مشکلتون رو حل نمیکرد دقیق بگید میخواید چه کاری انجام بدید، من راهنماییتون میکنم.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .