انجمن سایت کلیدستان



رفرش تب در تب لیوت یا فرگمنتزمان کنونی: ۱۳۹۸/۰۶/۰۳، ۰۲:۴۷ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: mahan
آخرین ارسال: banirazavi
پاسخ 4
بازدید 104

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رفرش تب در تب لیوت یا فرگمنت

رفرش تب در تب لیوت یا فرگمنت

#1
سلام خدمت دوستان 
mainActivity  دارای تب لیوت و viewPager  است و tabLayout دارای 26 تب است و یک فرگمنت  برای تمام  تب ها که فرگمنت دارای RecyclerView است که اطلاعات از دیتابیس را در recyclerview نمایش میدهد و ریساکلیر من یک دکمه برای ویرایش و فرگمنتبه شکل زیر است



کد:
public class FragmentNew extends Fragment {


   public int mPage;//in tedade iteme tablayout ast
   public static final String ARG_PAGE = "ARG_PAGE";

   RecyclerView recyclerView;
   static AdapterRecyclerView adapterRecyclerView;
   LinearLayoutManager linearLayoutManager;

   public static FragmentNew newInstance(int page) {
       Bundle args = new Bundle();
       args.putInt(ARG_PAGE, page);
       FragmentNew fragment = new FragmentNew();
       fragment.setArguments(args);
       return fragment;
   }

   @Override
   public void onCreate(Bundle saveInstanceState) {
       super.onCreate(saveInstanceState);
       mPage = getArguments().getInt(ARG_PAGE);

   }

   @Nullable
   @Override
   public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState) {

       View view = inflater.inflate(R.layout.fragment1, container, false);


       if (mPage == 1) {
           linearLayoutManager = new LinearLayoutManager(G.context);
           recyclerView = (RecyclerView) view.findViewById(R.id.recyfrag);
           adapterRecyclerView = new AdapterRecyclerView(ActivityMain.a);
           recyclerView.setHasFixedSize(true);
           recyclerView.setLayoutManager(linearLayoutManager);
           recyclerView.setAdapter(adapterRecyclerView);
           adapterRecyclerView.notifyDataSetChanged();


       }
       if (mPage == 2) {
          

   

و در addapterViewPager   در قسمت get item به شکل زیر است

  

کد:
public Fragment getItem(int position) {

       return FragmentNew.newInstance(position+1);


تا اینجا مشکلی ندارم اما مشکل من وقتی است که رو دکمه ویرایش در recyclerview  کلیک میکنم  به اکتیویتی دیگه میرم و اطلاعات رو ویرایش و با استفاده از intent به  Activity دارای tablyout برمیگردم تب من رفرش نشده و باید از برنامه خارج و بعد وارد تا تغییرات انجام بشه و من در متد onResum()  در فرگمنت نوتیفای رو انجام با این کار فقط با جابجایی بین یک تب با دو تب کنار تر  رفرش میشه حالا چطور وقتی روی ویرایش کلیک میکنم و به اکتیویتی دیگر میرم و ویرایش میکنم و برمیگردم اطلاعات ویرایش شده باشه ممنون میشک راهنمایی کنید
پاسخ

رفرش تب در تب لیوت یا فرگمنت

#2
سلام دوستان کسی نمیتونه مشکل من رو حل کنه
پاسخ

رفرش تب در تب لیوت یا فرگمنت

#3
سلام 

من کاملا متوجه مشکلت نشدم ولی چیزی که به نظرم میتونه مشکلت رو حل کنه رو میگم

میتونی از اینترفیس ها بین اکتیویتی و فرگمنت استفاده کنی تا بتونی از فرگمنت با اکتیویتی ارتباط برقرار کنی و متدی رو که میخوای در اکتیویتی اجرا کنی
این کد رو ببین:
ساخت اینترفیس(من تو یه فایل به اسم  Interfaces این رو ساختم):
کد:
interface OnFragmentJobChangedListener{
       void OnChange(boolean b);

   }
بعدش در اکتیویتی اون رو پیاده سازی میکنیم:
کد:
public class MainActivity extends AppCompatActivity implements Interfaces.OnFragmentJobChangedListener
بعدش توی فرگمنت ، یه نمونه از اون ایترفیس که قبلا ساختیم(کدش هم اینحا برات اورده بودم) رو میسازیم:
کد:
public class xFragment extends Fragment {


   /** my custom listener */

   private Interfaces.OnFragmentJobChangedListener mOnFragmentJobChangedListener;


و در اخر باید توی فرگمنت؛ اکتیویتی خودمون رو به اینترفیس تبدیل کنیم ( یا به اصطلاح کَست کنیم):
کد:
@Override
   public void onAttach(Activity activity) {
       super.onAttach(activity);
       try {
           mOnFragmentJobChangedListener = (Interfaces.OnFragmentJobChangedListener) activity;
       } catch (ClassCastException e) {
           e.printStackTrace();
       }
   }

حالا میتونیم هرجای فرگمنت این کد رو اجرا کنیم و بعدش همانطور که اینترفیس در اکتیویتی پیاده سازی شده بود؛ متد در اکتیویتی فراخوانده میشود
کد:
                       mOnFragmentJobChangedListener.OnChange(true);

نمیدونم برات مفید بود یا نه Big Grin

اگه مشکلت رو واضح تر بگی شاید بتونم کمکت کنم
و راستی از OnActivityResult  که حتما استفاده کردی؟ اگه نه بگو برات توضیح بدم، فکر بهتر بود این رو توضیح میدادم تا اینترفیس رو book
پاسخ

رفرش تب در تب لیوت یا فرگمنت

#4
با تشکر مطلب مفیدی بود
پاسخ


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان