سلام دوستان عزیز وقت بخیر
من یک اکتیویتی اصلی دارم و داخل این اکتیویتی یک TabLayout و یک ViewPager دارم و چهار تا Fragment در این ViewPager دارم همان طور که از عنوان تاپیک مشخصه وقتی بین فرگمنت ها جا به جا میشم اطلاعاتشون از بین میره و تبدیل میشن به یک صفحه خالی...
دوستان عزیز اگر اطلاعات و تجربه ای در این زمینه دارین ممنون میشم راهنمایی کنید
پیشاپیش ممنون
سلام
لطفا خطا یا ارورتون و بگید که بتونم بیشتر راهنمایی تون کنم
ولی این مثال و ببینید شاید کمکتون کرد
سلام وقت بخیر
خیلی ممنون از جواب
خطا و اروری نداره فقط نمیدونم چرا وقتی بین فرگمنت هایی که داخل ViewPager قرار داره جا به جا میشم اطلاعاتشون از بین میره ؟و این زمانی رخ میده که از 3 تا فرگمنت و یا بیشتر استفاده کرده باشم و این یعنی با 2 تا فرگمنت هیچ مشکلی پیش نمیاد.مثلا فرض کنید 3 تا فرگمنت به ترتیب با نام های A و B و C داریم و زمانی که برنامه اجرا بشه ابتدا در فرگمنت A هستیم و در حالی که هنوز اطلاعات این فرگمنت به طور کامل لود نشده اگر به فرگمنت B بریم خب هیچ مشکلی پیش نمیاد ولی اگر بلافاصله به فرگمنت C بریم با این کار بعد از بازگشت به فرگمنت A دیگه هیچی مشاهده نمیشه و اطلاعاتش از بین رفته و مانند یک صفحه خالی میشه و همچنین برای فرگمنت C هم این مشکل پیش میاد اما برای فرگمنت B که در این وسط قرار دارد هیچ مشکلی پیش نمیاد.
و این مشکل برای فرگمنت های A و C زمانی رخ میده که اطلاعات داخلشون به طور کامل لود نشده باشه یعنی اگر صبر کنم تا اطلاعات فرگمنت A به طور کامل لود بشه و سپس به فرگمنت C برم هیچ مشکلی برای فرگمنت A پیش نمیاد.
امیدوارم که با این توضیحات و واژه های تکراری منظورمو درست رسونده باشم
پیشاپیش ممنون
ببنید یه موضوعی که هست من خودم تو نت سرچ کردم فقط با دو فرگمنت بوده یعنی زمانی که من از فزگمن a می خوام به b برم داره ولی حالا از دومی به سومی نمیشه
و تمام سورس های اندرویدس همسن طوری بوده ولی یه قطعه کد دیدم ببینید مشکلتون بر طرف میشه
All Fragment-to-Fragment communication is done through the associated Activity. Two Fragments should never communicate directly. http://developer.android.com/training/basics/fragments/communicating.html test.java // in your case its MainActivity public class test extends FragmentActivity implements textEntered { String value; boolean check=false; BottomFragment frg2; FragmentTransaction transaction; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Top_Fragment frg=new Top_Fragment(); frg2=new BottomFragment(); FragmentManager manager=getSupportFragmentManager(); transaction=manager.beginTransaction(); transaction.add(R.id.My_Container_1_ID, frg, "Frag_Top_tag"); transaction.add(R.id.My_Container_3_ID, frg2, "Frag_Bottom_tag"); transaction.commit(); } @Override public void setValue(String editextvalue) { // TODO Auto-generated method stub value =editextvalue; Log.i("..............",""+value); if (frg2 != null) { frg2.setName(value); } else { Toast.makeText(getApplicationContext(),"fragment 2 is null", 1000).show(); } } } Top_Fragment.java public class Top_Fragment extends Fragment{ textEntered mCallback; Button b; EditText ed; public interface textEntered { public void setValue(String editextvalue); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO Auto-generated method stub View view=inflater.inflate(R.layout.my_fragment1, container, false); ed = (EditText) view.findViewById(R.id.editText1); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); b= (Button) getView().findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String s =ed.getText().toString(); mCallback.setValue(s); } }); } @Override public void onAttach(Activity activity) { super.onAttach(activity); // This makes sure that the container activity has implemented // the callback interface. If not, it throws an exception try { mCallback = (textEntered) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement textEntered"); } } } my_fragment1.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:ems="10" android:textColor="#000000" android:singleLine="true" > <requestFocus /> </EditText> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="Button" /> </RelativeLayout> Change to display_text=(TextView) view.findViewById(R.id.textView1); // id is textView 1 not editText1
سلام وقت بخیر
خیلی ممنون از جواب
با این کد مشکلم حل نشد ولی پس از کلی فکرو ور رفتن با کدهای برنامه فهمیدم مشکل از SwipeRefreshLayout بود وقتی اینو حذف کردم درست شد ولی هنوزم نفهمیدم که چرا با این Swipe مشکل داشت به هر حال مشکلم حل شد هر چند دیگه نمیتونم از Swipe تو برنامم استفاده کنم.
کمتر کسی پیدا میشه که جواب بده یه دنیا ممنون
شبتون بخیر
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)