آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

باز کردن فرگمنت از داخل recycle

moin007  9 سال پیش  9 سال پیش
0 0

سلام

دوستان من ی 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();
0 0
اصلن متوجه نشدم میشه بیشتر توضیح بدین؟ (9 سال پیش)
+1 0
بخش اول مربوط به ساخت فرگمنت بود. گفتم جای اینکه یک فرگمنت new کنید از متد استاتیک newInstance استفاده کنید و هر پارامتری که می‌خواهید رو براش بفرستید. در این حالت کدهای مربوط به bundle رو فقط یکبار و داخل کلاس فرگمنت می‌نویسید. بخش دوم هم اینه که بعد از اینکه فرگمنت رو ساختید و میخواید نمایش بدید باید اون رو داخل یک اکتیویتی نمایش بدید. اگر میخواید داخل همین اکتیویتی که هستید نمایش بدید کافیه جای R.id.mLayout آیدی لایه خودتون رو بگذارید. و اگر میخواید داخل یک اکتیویتی دیگه نمایش بدید همین کارو داخل اون اکتیویتی انجام بدید و سپس startActivity رو صدا کنید. (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .