🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / Android RMOS / fragment de geri tuşuna basınca datalar boş olmaması için BackPressed

1-) Android RMOS - fragment de geri tuşuna basınca datalar boş olmaması için BackPressed

 

public class Genel {

 public static Stack<Integer> fragmentYigin = new Stack<Integer>();

 
public static void binoncekiFragmenteGit() {
    
try{
        
fragmentYigin.pop();
        
if(fragmentYigin.size()<1){
            
MainActivity.mainActivity.finish();
            
return;
        }
        
int bironceki = fragmentYigin.pop();
        
MainActivity.mainActivity.navController.navigate(bironceki);
    }
catch (Exception ex){
        
MainActivity.mainActivity.finish();
    }
}


}

 

Kullanımı :

 

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    
super.onActivityCreated(savedInstanceState);

    
Genel.fragmentYigin.push(MainActivity.mainActivity.navController.getCurrentDestination().getId());


    
OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
        
@Override
        
public void handleOnBackPressed() {
            
Genel.binoncekiFragmenteGit();
        }
    };
    requireActivity().getOnBackPressedDispatcher().addCallback(getActivity(),
callback);

  }

 

Açıklama : Her fragment oluştugunda yıgına ekler. geri tuşuna basınca bir onceki kendisi olur. ondan da once -> bironceki fragment olur -> yani iki kere pop yaparız. eğer tek pop dan sonra size sıfır ise uygulamadan çıkar

 

 

2-) İKİNCİ YOL AMA SAĞLIKLI BULAMADIM

OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
    
@Override
    
public void handleOnBackPressed() {
        
MainActivity.mainActivity.navController.navigate(MainActivity.mainActivity.navController.getPreviousBackStackEntry().getDestination().getId());

    }
};
requireActivity().getOnBackPressedDispatcher().addCallback(getActivity(),
callback);

 

 

 

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    
xmlns:app="http://schemas.android.com/apk/res-auto"
    
xmlns:tools="http://schemas.android.com/tools"
    
android:id="@+id/mobile_navigation"
    
app:startDestination="@+id/navigation_dashboard">



    <
fragment
        
android:id="@+id/navigation_dashboard"
        
android:name="com.ramzey.doviz.ui.dashboard.DashboardFragment"
        
android:label="Piyasalar"
        
tools:layout="@layout/fragment_dashboard">
        <
action
            
android:id="@+id/a1"
            
app:destination="@id/navigation_home"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
        <
action
            
android:id="@+id/a2"
            
app:destination="@id/navigation_notifications"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
    </
fragment>

    <
fragment
        
android:id="@+id/navigation_home"
        
android:name="com.ramzey.doviz.ui.home.HomeFragment"
        
android:label="RamZey Döviz"
        
tools:layout="@layout/fragment_home" >
        <
action
            
android:id="@+id/a1"
            
app:destination="@id/navigation_notifications"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
        <
action
            
android:id="@+id/a2"
            
app:destination="@id/navigation_dashboard"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
    </
fragment>

    <
fragment
        
android:id="@+id/navigation_notifications"
        
android:name="com.ramzey.doviz.ui.notifications.NotificationsFragment"
        
android:label="Alarm Kur"
        
tools:layout="@layout/fragment_notifications" >
        <
action
            
android:id="@+id/a1"
            
app:destination="@id/navigation_home"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
        <
action
            
android:id="@+id/a2"
            
app:destination="@id/navigation_dashboard"
            
app:launchSingleTop="true"
            
app:popUpTo="@+id/main_nav_graph"
            
app:popUpToInclusive="true" />
    </
fragment>
</
navigation>

 

 2021 Aralık 29 Çarşamba
 395