flash118

مشکل در فرگمنت

14 ارسال در این موضوع قرار دارد

با سلام من با استفاده از DialogFragment چند تا فرگمنت رو ساختم و تو لود و اجرا مشکلی ندارم الان میخواهم مثلا وقتی کاربر از فرگمنت اول اسکرول میکنه  و وارد فرگمنت دوم میشه حین ورود یک پیغام بهش بدم نمیدونم چطوری این کارو رو انجام بدم؟
بعد میخواهم وقتی کاربر روی یک دکمه در فرگمنت دوم کلیک کرد مقدار یک Text viewدر فرگمنت بعدی آپدیت بشه میشه راهنمایی کنید چطوری میتونم این کارها رو انجام بدم ؟

ویرایش شده در توسط flash118

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 دقیقه قبل، flash118 گفته است :

با سلام من با استفاده از DialogFragment چند تا فرگمنت رو ساختم و تو لود و اجرا مشکلی ندارم الان میخواهم مثلا وقتی کاربر از فرگمنت اول اسکرول میکنه  و وارد فرگمنت دوم میشه حین ورود یک پیغام بهش بدم نمیدونم چطوری این کارو رو انجام بدم؟
بعد میخواهم وقتی کاربر روی یک دکمه در فرگمنت دوم کلیک کرد مقدار یک Text viewدر فرگمنت بعدی آپدیت بشه میشه راهنمایی کنید چطوری میتونم این کارها رو انجام بدم ؟

 

میتونید با interface اینکار رو انجام بدید. یعنی وقتی وارد فرگمنت دوم شدید متد صدا زده بشه

 

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، Farzad Sarseifi گفته است :

 

میتونید با interface اینکار رو انجام بدید. یعنی وقتی وارد فرگمنت دوم شدید متد صدا زده بشه

 

با تشکر میشه لطفا بفرمایید دقیق چه کاری باید انجام بدم کلی تست کردم بهم ریختم اگه راهنمایی جامع کنید ممنون میشم با سپاس

 

من کد هامو می فرستم شما راهنمایی کنید

//----------------------------------------

public class FragmentDialog extends DialogFragment
{
    // ------------------------------------------------------------------------
    // members
    // ------------------------------------------------------------------------

    private SectionsPagerAdapter sectionsPagerAdapter;
    private ViewPager viewPager;

    // ------------------------------------------------------------------------
    // public usage
    // ------------------------------------------------------------------------

    @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState)
    {
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
      
        dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

        return dialog;


    }



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_dialog, container);

        // tab slider
        sectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager());

        // Set up the ViewPager with the sections adapter.
        viewPager = (ViewPager)view.findViewById(R.id.pager);
        viewPager.setAdapter(sectionsPagerAdapter);



        return view;
    }

    // ------------------------------------------------------------------------
    // inner classes
    // ------------------------------------------------------------------------

    /**
     * Used for tab paging...
     */
    public class SectionsPagerAdapter extends FragmentPagerAdapter
    {
        //instantiateItem





        public SectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            if (position == 0)
            {
                // find first fragment...
                Fragment_Tab_1 ft1 = new Fragment_Tab_1();
                return ft1;
            }
            if (position == 1)
            {
                // find first fragment...
                Fragment_Tab_2 ft2 = new Fragment_Tab_2();
                return ft2;
            }
            else if (position == 2)
            {
                // find first fragment...
                Fragment_Tab_3 ft3 = new Fragment_Tab_3();
                return ft3;
            }
            else if (position == 3)
            {
                // find first fragment...
                Fragment_Tab_4 ft4 = new Fragment_Tab_4();
                return ft4;
            }
            else if (position == 4)
            {
                // find first fragment...
                Fragment_Tab_5 ft5 = new Fragment_Tab_5();
                return ft5;
            }
            else if (position == 5)
            {
                // find first fragment...
                Fragment_Tab_6 ft6 = new Fragment_Tab_6();
                return ft6;
            }
            else if (position == 6)
            {
                // find first fragment...
                Fragment_Tab_7 ft7 = new Fragment_Tab_7();
                return ft7;
            }
   
            return null;
        }

        @Override
        public int getCount() {
            // Show 2 total pages.
            return 7;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position) {
                case 0:
                    return "پایه نصب";
                case 1:
                    return "سمت زنجیر";
                case 2:
                    return "نوع زنجیر";
                case 3:
                    return "سیستم کنترل";
                case 4:
                    return " انتخاب دالبر";
                case 5:
                    return "انتخاب والان";
                case 6:
                    return "انتخاب رزین";

            }
            return null;
        }



    }

}

این کد فرگمنت اولم :

public class Fragment_Tab_1 extends Fragment
{
    View view;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
         view=inflater.inflate(R.layout.fragment_tab_1, container, false);

     setup_header();




        return view;
    }

حالا میخواهم وقتی اینجا رو یه دکمه کلیک شد تو فرگمنت دوم مقدار تکس ویو رو آپدیت کنم

چطوری میشه اینکار رو بکنم؟

ویرایش شده در توسط flash118

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

باید یک لیستنر بسازی دوست من

آموزش ساخت لیستنر رو سرچ کن

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 11 دقیقه قبل، saleh700 گفته است :

باید یک لیستنر بسازی دوست من

آموزش ساخت لیستنر رو سرچ کن

با سلامدوست عزیز متشکر از جواب شما من مشکل ساخت لیستنیر رو ندارم مشکل اینه کجا این کار رو انجام بدم و الا میدونم باید برای دکمه لیستنر تعریف کنم مشکل آپدیت تکس ویو در فرگمنت دوم هست

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 7 ساعت قبل، flash118 گفته است :

با سلامدوست عزیز متشکر از جواب شما من مشکل ساخت لیستنیر رو ندارم مشکل اینه کجا این کار رو انجام بدم و الا میدونم باید برای دکمه لیستنر تعریف کنم مشکل آپدیت تکس ویو در فرگمنت دوم هست

سلام مقداریو که میخواین تو TextView  فرگمنت دوم نشون بدین از فرگمنت اول به عنوان یک پارامتر ست کنید و به فرگمنت دوم پاس بدین و با داخل متد onCreateView تو فرگمنت دوم این مقدارو بگیرین و به TextVew بدین.

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 27 دقیقه قبل، a.khosroabadi گفته است :

سلام مقداریو که میخواین تو TextView  فرگمنت دوم نشون بدین از فرگمنت اول به عنوان یک پارامتر ست کنید و به فرگمنت دوم پاس بدین و با داخل متد onCreateView تو فرگمنت دوم این مقدارو بگیرین و به TextVew بدین.

با سلام و تشکر از پاسخ شما دوست عزیز

میشه با یه نمونه مثل برام ارسال کنید من متوجه بشم اونقده روش های گوناگون تست کردم بهم ریختم با سپاس

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، flash118 گفته است :

با سلام و تشکر از پاسخ شما دوست عزیز

میشه با یه نمونه مثل برام ارسال کنید من متوجه بشم اونقده روش های گوناگون تست کردم بهم ریختم با سپاس

بله تو فرگمنت اول به این صورت مقدارو ست میکنید 

Bundle bundle=new Bundle();
bundle.putString("message", "From Fragment A");
  //set Fragmentclass Arguments
Fragmentclass fragobj=new Fragmentclass();
fragobj.setArguments(bundle);

و تو فرگمن دوم به این صورت مقدارو میگیرین فقط این کارو تو متد onCreateView انجام بدین

  String strtext=getArguments().getString("message");

حالا این مقدارو میتونید به textView  بدین

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، a.khosroabadi گفته است :

بله تو فرگمنت اول به این صورت مقدارو ست میکنید 


Bundle bundle=new Bundle();
bundle.putString("message", "From Fragment A");
  //set Fragmentclass Arguments
Fragmentclass fragobj=new Fragmentclass();
fragobj.setArguments(bundle);

و تو فرگمن دوم به این صورت مقدارو میگیرین فقط این کارو تو متد onCreateView انجام بدین


  String strtext=getArguments().getString("message");

حالا این مقدارو میتونید به textView  بدین

با سلام سپاس گذارم که با حوصله جواب میدید تشکر

مشکل ارسال مقدار ندارم فقط فرض کنید الان تو فرگمنت اول هستم متد on create viewفرگمنت دوم هم به محض ورود به فرگمنت اول ساخته میشه حالا من میخواهم زمانی که کاربر اسکرول کرد رفت به فرگمنت بعدی یعنی از فرگمنت فعلی به فرگمنت بعدی رفت به محض رفتن متد آپدیت فراخواهی بشه تو تصویر ارسال مثلا از فرگمنت فعلی یعنی (سمت زنجیر) وقتی کاربر تاچ کنه بره به فرگمنت (نوع زنجیر)

به محض تاچ کردن متد اپدیت فراخوانی بشه

اگه اینو راهنمایی کنید چطور انجامش بدم یه دنیا سپاس گذار خواهم بود با تشکر

ucd0_1212.jpgه

ویرایش شده در توسط flash118

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

دوستان اساتید گرامی کسی نبود این مشکل منو کمک کنه گیر این یه بخشم اگه حل بشه عالی میشه

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 5 دقیقه قبل، flash118 گفته است :

دوستان اساتید گرامی کسی نبود این مشکل منو کمک کنه گیر این یه بخشم اگه حل بشه عالی میشه

توی متد onAttach برید و متد  update خودتون رو صدا بزنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در ۱ ساعت قبل، Farzad Sarseifi گفته است :

توی متد onAttach برید و متد  update خودتون رو صدا بزنید

با تشکر این متد رو هم تست کردم ولی جواب نداد :huh:

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام خوب یک بار همون روشی که گفتم اون پارامتر را تو متد onResume  فرگمنت تست کنید

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 4 ساعت قبل، a.khosroabadi گفته است :

سلام خوب یک بار همون روشی که گفتم اون پارامتر را تو متد onResume  فرگمنت تست کنید

با سلام بلاخره با جستجو به جواب موضوع رسیدم تشکر از شما دو عزیز که با بزرگواری جواب گو بودید

اما راه حل که من پیدا کردم کافی بود تو کلاس دیالوگ متد onscrolchangeویوچیجر رو فراخوانی میکردم انجام دادم و مشکل آپدیت من حل شد با تشکر

به اشتراک گذاری این پست


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط soroush80
      سلام دستان من به یه مشکلی خوردم من یه battom barدرست کردم و خب چند تا فرگمنت براش قرار دادم الان میخوام تو یکی از فرگمنت هام  toolbarبزارم نه تو کل برنامه اما چون فایل جاوای اون activity من به صورت extends fragmentهست خیلی از خواصAppCompatActivity رو نداره به همین خاطر نمیتونم toolbarرو بهش اظافه کنم میخواستم اگه میشه یا یه روش بهم بگید که fragment هم خواصAppCompatActivity رو پیدا کنه یا یه راه حل بهم بدید.
      خیلی ممنون.
    • توسط yasin133
      چطور میتونم از یک فرگمنت به یک اکتیویتی انتقال پیدا کنم. تو دیزاین فرگمنتم یه دکمه دارم که میخوام باهاش به یه اکتیویتی برم، اما تو کلاس فرگمنتم وقتی میخوام باتنو تعریف کنم ارور میده برای findviewbyid. ممنون میشم اگه کمکم کنید 
    • توسط rexo
      سلام به همگی...
      مسقیم میرم سر اصل مطلب:
      من داخل یکی از فرگمنتهایی که پیاده سازی کردم، یک دکمه قرار دادم که با زدن اون یک layout رو با دستور:
      layout.setVisibility(View.VISIBLE); نمایش میدم، حالا میخوام با زدن دکمه برگشت این layout بسته بشه ولی متد onBackPressed رو نمیشه توی فرگمنت پاده سازی کرد!!!!
      چجوری میتونم این کار رو انجام بدم؟!!!
      ممنون از راهنماییتون.
    • توسط Razieh Shahraki
      در این آموزش میخواهیم کار با فرگمنت رو انجام بدیم.
      برای این کار پروژه جدیدی ایجاد کرده.
      در فایل activity_main.xml کد زیر را قرار دهید.
      xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent" > android:name="balaji.fragment_static.Fragment1" android:id="@+id/fragment1" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> android:name="balaji.fragment_static.Fragment2" android:id="@+id/fragment2" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" />  
      فایل به اسم Fragment1.xml ایحاد کنید و کد زیر را در آن قرار دهید.
      xmlns:tools="http://schemas.android.com/tools" android:background="#7B68EE" android:layout_width="match_parent" android:layout_height="match_parent" > android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textSize="30dp" android:text="Fragment 1" /> فایل دیگری به اسم Fragment2.xml ایجاد کنید و کد زیر را در آن قرار دهید.
       
      xmlns:tools="http://schemas.android.com/tools" android:background="#00FF00" android:layout_width="match_parent" android:layout_height="match_parent" > android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:textSize="30dp" android:text="Fragment 2" /> در فایل MainActivity.java کد زیر را قرار داده

       
      import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } }  
      در فایل Fragment1.java کد زیر را قرار داده
       
      import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment1, container, false); } }  
      در فایل Fragment2.java هم کد زیر را قرار دهید.
      import android.annotation.SuppressLint; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @SuppressLint("NewApi") public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment2, container, false); } }  
       
      برنامه را اجرا کنید.
      خروجی برنامه به صورت زیر می باشد

    • توسط hassan8971
      سلام. من تو اکلیپس میتونستم با کد زیر اکشن بار پیش فرض رو حذف کنم ولی تو استودیو نمیدونم چرا نمیشه؟؟؟
      android:theme="@android:style/Theme.NoTitleBar" اس دی کی ام 24 هست

  • دوره آموزشی اندروید ایران کانادا آموزش ویدئویی اندروید آموزش برنامه نویسی اندروید اندروید کاپ دوره آنلاین اندروید کتاب های آموزشی اندروید بسته آموزشی اندروید دوره برنامه نویسی اندروید آموزش Kotlin آموزش برنامه نویسی ios
  • فایل