mostafa5709

دکمه برگشت در فرگمنت

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

سلام 

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

تو اکتیوتی 

    protected OnBackPressedListener onBackPressedListener;

    public interface OnBackPressedListener {
        void doBack();
    }

    public void setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
        this.onBackPressedListener = onBackPressedListener;
    }

    @Override
    public void onBackPressed() {
        if (onBackPressedListener != null)
            onBackPressedListener.doBack();
        else
            super.onBackPressed();
    }

    @Override
    protected void onDestroy() {
        onBackPressedListener = null;
        super.onDestroy();
    }

داخل فرگمنت

public class CatServFragment extends Fragment implements agahi_main.OnBackPressedListener {

   @Override
    public void doBack() {
        agahi_main.fm.beginTransaction().replace(R.id.frame, new HomeFragment()).commit();


    }

}

 

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


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

سلام 

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

تو اکتیوتی 


    protected OnBackPressedListener onBackPressedListener;

    public interface OnBackPressedListener {
        void doBack();
    }

    public void setOnBackPressedListener(OnBackPressedListener onBackPressedListener) {
        this.onBackPressedListener = onBackPressedListener;
    }

    @Override
    public void onBackPressed() {
        if (onBackPressedListener != null)
            onBackPressedListener.doBack();
        else
            super.onBackPressed();
    }

    @Override
    protected void onDestroy() {
        onBackPressedListener = null;
        super.onDestroy();
    }

داخل فرگمنت


public class CatServFragment extends Fragment implements agahi_main.OnBackPressedListener {

   @Override
    public void doBack() {
        agahi_main.fm.beginTransaction().replace(R.id.frame, new HomeFragment()).commit();


    }

}

 

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

 

 

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


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

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

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

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

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


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

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

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


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

  • مطالب مشابه

    • توسط 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
  • فایل