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>