ورود

View Full Version : عدم نمایش باتون های فرگمنت، در ویو پیجر !



ghasem110deh
چهارشنبه 01 آذر 1396, 00:23 صبح
سلام به همه :-)
دوستان من دو تا فرگمنت ساده دارم (که هر کدوم فقط یه باتون دارن) که ازشون توی ویوپیجر داخل اکتیویتی اصلی استفاده کردم !
تا اینجا مشکلی نیست / توی ویوپیجر دو تا فرگمنت با باتون ها نمایش داده میشه
مشکل اینجاس که وقتی برای باتون فرگمنت اول onclick ست میکنم دیگه باتون دوم (که توی فرگمنت دوم هست نمایش داده نمیشه)
و اگر برای باتون فرگمنت دوم هم onclick ست کنم دیگه هیچکدوم از باتون ها رو نشون نمیده !!!!

http://csharpcorner.mindcrackerinc.netdna-cdn.com/forums/uploadfile/861bdc/11162017102801AM/Capture.PNG
توی عکس الان باتون ها رویداد باتون کلیک ندارن / پس نمایش داده میشن ! اما وقتی تعریف میشن و رویدادی براشون تعریف بشه دیگه نمایش داده نمیشن :ناراحت:
البته عکس واسه این برنامه اس :
https://cafebazaar.ir/app/ir.rahgoshafan.alphabetical/?l=fa
که توی اون سه تا لایه خالی XML بود - گفتم شاید اگه از فرگمنت استفاده کنم مشکل بر طرف بشه که فرقی نکرد !
اینم کد اکتیویتی (توی فرگمنت ها هم چیزی نیست فقط ویو رو برگدوندم)

private void initViewPager() {
ViewPager VIEW_PAGER = (ViewPager) findViewById(R.id.viewPager);
LAYOUTS = new int[]{R.layout.fragment_one, R.layout.fragment_blank};
TourViewPagerAdapter ViewPagerAdapter = new TourViewPagerAdapter();
VIEW_PAGER.setAdapter(ViewPagerAdapter);
VIEW_PAGER.addOnPageChangeListener(viewPagerPageCh angeListener);
}

private class TourViewPagerAdapter extends PagerAdapter {
private LayoutInflater layoutInflater;

TourViewPagerAdapter() {
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
try {
layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(LAYOUTS[position], container, false);
Button btn_fragment = (Button)view.findViewById(R.id.btn_fragment);
// Button btn_fragment_two = (Button)view.findViewById(R.id.btn_fragment_next);
// btn_fragment.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Toast.makeText(getApplicationContext(), "show", Toast.LENGTH_SHORT).show();
// }
// });
// btn_fragment_two.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// Toast.makeText(getApplicationContext(), "this show 2", Toast.LENGTH_SHORT).show();
// }
// });
container.addView(view);
return view;
} catch (Exception e) {
return null;
}
}

@Override
public int getCount() {
return LAYOUTS.length;
}

@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
container.removeView(view);
}
}

ViewPager.OnPageChangeListener viewPagerPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override
public void onPageScrollStateChanged(int arg0) {

}
};
تشکر

ghasem110deh
پنج شنبه 02 آذر 1396, 10:52 صبح
دوستان کسی راه حلی نداره !؟
چطور از توی اکتیویتی میشه بک گراند باتونی که توی فرگمنت قرار داره رو عوض کرد !؟

hharddy
پنج شنبه 02 آذر 1396, 11:59 صبح
سلام
از طریق فرگمنت منیجر به ویو های فرگمنت میتونید دسترسی داشته باشید


Fragment frag = getFragmentManager().findFragmentById(R.id.fragmen tid);
((Button) frag.getView().findViewById(R.id.button )).setBackgroundResource(...);

ghasem110deh
پنج شنبه 02 آذر 1396, 12:58 عصر
سلام
از طریق فرگمنت منیجر به ویو های فرگمنت میتونید دسترسی داشته باشید


Fragment frag = getFragmentManager().findFragmentById(R.id.fragmen tid);
((Button) frag.getView().findViewById(R.id.button )).setBackgroundResource(...);

مشکل همینه دیگه / پیدا نمیکنه فرگمنت رو !؟

147123

hharddy
پنج شنبه 02 آذر 1396, 20:49 عصر
از FragmentTransaction استفاده کردید؟
یا باید از FragmentTransaction استفاده کنید و موقع اضافه کردن فرگمنت یک تگ اختصاص بدید بهش یا متیونید از داخل xml هم ایدی بدید به فرگمنت.

ghasem110deh
جمعه 03 آذر 1396, 01:01 صبح
از FragmentTransaction استفاده کردید؟
یا باید از FragmentTransaction استفاده کنید و موقع اضافه کردن فرگمنت یک تگ اختصاص بدید بهش یا متیونید از داخل xml هم ایدی بدید به فرگمنت.

از FragmentTransaction هم که استفاده میکنم باز فرگمنت رو باید بهش بدم با آیدی دیگه !


TwoFragment one_fragment = new TwoFragment();
one_fragment.getFragmentManager().findFragmentByTa g("frag_2");
Button imageButton = (Button)one_fragment.getView().findViewById(R.id.b tn_frag_2);
imageButton.setBackgroundResource(R.drawable.butto n_help);

اصلا فرگمنت رو خطا میده و به باتون نمیرسه :لبخند:

ghasem110deh
شنبه 04 آذر 1396, 00:35 صبح
دوستان یه همچین چیزی باید درست کنم / ویو پیجری که به باتون ها از توی اکیتیویتی اصلی دسترسی مستقیم داشته باشم !
که باتون مرحله بعدی رو قفل ش رو باز کنم !

147133