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


رتبه موضوع:
  • 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
(۱۳۹۸/۰۲/۱۶, ۱۰:۰۲ ق.ظ)mahan نوشته: سلام خدمت دوستان 
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()  در فرگمنت نوتیفای رو انجام با این کار فقط با جابجایی بین یک تب با دو تب کنار تر  رفرش میشه حالا چطور وقتی روی ویرایش کلیک میکنم و به اکتیویتی دیگر میرم و ویرایش میکنم و برمیگردم اطلاعات ویرایش شده باشه ممنون میشک راهنمایی کنید



سلام

با احترام به جواب ادمین.
چیزی که متوجه شدم از حرفای شما که از برنامه خارج میشید و بعد دوباره وارد میشید تغییرات رو میبینید یعنی باید برای نمایش تغییرات متد Oncreate رو یک بار اجرا کنید، چیزی که از حرفای شما به ذهنم میرسه شما زمانی که روی دکمه رفتن به صفحه جدید رو میزینید برای ویرایش کافیه صفحه جاری رو close یا finish کنید و بعد از انجام ویرایش با Intent یک بار دیگه همون صفحه دارای فریگمنت رو به اصطلاح startActivity کنید. فک کنم مشکلت برطرف میشه
Iran  ErfanMahigir Iran
پاسخ
 سپاس شده توسط شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


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