بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
باز کردن فرگمنت از داخل recycle
سلام
دوستان من ی recycle دارم ک داخل اون یه cardview دارم . حالا می خوام وقتی روی ی آیتم کلیک شد آی دی من و بفرسته به یک فرگمنت دیگ و با اون آی دی من اطلاعاتم رو نشون بدم .
چ دستوری باید بنویسم این کار رو بکنه . تا اینجا رفتم جلو برای باز کردن فرگمنت مشکل دارم :(
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int id= (int) Long.parseLong(String.valueOf(strings.get(item2.get(position))));
Bundle arguments = new Bundle();
arguments.putInt("FragmentB_package",id);
Show fragment = new Show();
fragment.setArguments(arguments);
}
});
0
0
لینک (9 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
Rabbit
9 سال پیش
+2
0
راههای زیادی هست. ولی راهی که من داخل سایت گوگل دیدم اینه که شما جای اینکه برای ساخت فرگمنت از constructor استفاده کنید، یعنی جای اینکه بگید :
Show fragment = new Show();
بیاید یک instance از فرگمنت بسازید. instance یک کلاس static داخل فرگمنت هست که شما داخل اون میتونید مقادیر رو به فرگمنت ارسال کنید.
public static Show newInstance(int id) {
Show myFragment = new Show();
Bundle args = new Bundle();
args.putInt("FragmentB_package", id);
myFragment.setArguments(args);
return myFragment;
}
برای باز کردن فرگمنت هم باید لایهای که میخواید روی اون فرگمنت رو نمایش بدید بشناسید و کاری شبیه به تکه کد زیر انجام بدید:
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.myLayout, myFragment);
transaction.commit();
بخش اول مربوط به ساخت فرگمنت بود. گفتم جای اینکه یک فرگمنت new کنید از متد استاتیک newInstance استفاده کنید و هر پارامتری که میخواهید رو براش بفرستید. در این حالت کدهای مربوط به bundle رو فقط یکبار و داخل کلاس فرگمنت مینویسید. بخش دوم هم اینه که بعد از اینکه فرگمنت رو ساختید و میخواید نمایش بدید باید اون رو داخل یک اکتیویتی نمایش بدید. اگر میخواید داخل همین اکتیویتی که هستید نمایش بدید کافیه جای R.id.mLayout آیدی لایه خودتون رو بگذارید. و اگر میخواید داخل یک اکتیویتی دیگه نمایش بدید همین کارو داخل اون اکتیویتی انجام بدید و سپس startActivity رو صدا کنید. (9 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .