آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

برگشتن به فرگمنت قبلی

abdolsalam  5 سال پیش  5 سال پیش
0 0

سلام دوستان

وقتی چندتا اکتیویتی باز میشه و دکمه بک روز میزنیم حالت stack به اخرین اکتیویتی باز شده برمیگردیم

 

چه جوری میشه همین کارو برای فرگمنت ها هم انجام داد؟ مث برنامه دیوار

 برای این سوال 1 پاسخ وجود دارد. مشاهده پاسخ صحیح
پاسخ به سوال 
abdolsalam  5 سال پیش
+2 0

 پاسخ صحیح

سلام به همه دوستان

خوشبختانه تونستم مشکلو حل کنم

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

 

 


import android.annotation.SuppressLint;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;

import java.util.Stack;

import ir.madlearn.app.jedarapp.R;
import ir.madlearn.app.jedarapp.model.helper.LanguageHelper;
import ir.madlearn.app.jedarapp.view.activity_main.add_ads.FragmentAddAds;
import ir.madlearn.app.jedarapp.view.activity_main.category.FragmentCategory;
import ir.madlearn.app.jedarapp.view.activity_main.chat.FragmentChat;
import ir.madlearn.app.jedarapp.view.activity_main.home.FragmentHome;
import ir.madlearn.app.jedarapp.view.activity_main.profile.FragmentProfile;

public class ActivityMain extends AppCompatActivity {

@SuppressLint("StaticFieldLeak")
public static AppCompatActivity activity;

public static Fragment currentFragment;

private static Stack<Fragment> fragmentStack = new Stack<>();

@SuppressLint("StaticFieldLeak")
private static BottomNavigationView bottomNavigation;
private static boolean customSelectItem = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LanguageHelper.configResource(this);
setContentView(R.layout.activity_main);

activity = this;

initBottomNavigation();

initHomeFragment();
}

@Override
public void onBackPressed() {
if (fragmentStack.empty()) {
super.onBackPressed();
} else {
Fragment fragment = fragmentStack.pop();
replaceContentWith(fragment, false);
setSelectedBottomNavItem();
}
}

public static void replaceContentWith(final Fragment fragment, boolean mustAddToStack) {
if (mustAddToStack) {
fragmentStack.push(currentFragment);
}

activity.getSupportFragmentManager().beginTransaction()
.replace(R.id.contentMain, currentFragment = fragment)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
}

/////// Home fragment

private void initHomeFragment() {
currentFragment = new FragmentHome();
replaceContentWith(currentFragment, false);
}

/////// Bottom navigation

private void initBottomNavigation() {
BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
if (customSelectItem){
customSelectItem = false;
return true;
}
replaceContentWith(new FragmentHome(), true);
return true;
case R.id.navigation_category:
if (customSelectItem){
customSelectItem = false;
return true;
}
replaceContentWith(new FragmentCategory(), true);
return true;
case R.id.navigation_add:
if (customSelectItem){
customSelectItem = false;
return true;
}
replaceContentWith(new FragmentAddAds(), true);
return true;
case R.id.navigation_chat:
if (customSelectItem){
customSelectItem = false;
return true;
}
replaceContentWith(new FragmentChat(), true);
return true;
case R.id.navigation_profile:
if (customSelectItem){
customSelectItem = false;
return true;
}
replaceContentWith(new FragmentProfile(), true);
return true;
}
return false;
}
};

bottomNavigation = findViewById(R.id.navigation);
bottomNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

private static void setSelectedBottomNavItem() {
customSelectItem = true;
if (currentFragment instanceof FragmentHome) {
bottomNavigation.setSelectedItemId(R.id.navigation_home);
} else if (currentFragment instanceof FragmentCategory) {
bottomNavigation.setSelectedItemId(R.id.navigation_category);
} else if (currentFragment instanceof FragmentAddAds) {
bottomNavigation.setSelectedItemId(R.id.navigation_add);
} else if (currentFragment instanceof FragmentChat) {
bottomNavigation.setSelectedItemId(R.id.navigation_chat);
} else if (currentFragment instanceof FragmentProfile) {
bottomNavigation.setSelectedItemId(R.id.navigation_profile);
}
}
}

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .