Do we need to override onBackPressed() method for every screen? I do not see any other ways to do so. Please let me know if there is a more simpler way to do so.
Do we need to override onBackPressed() method for every screen? I do not see any other ways to do so. Please let me know if there is a more simpler way to do so.
make a super class for all of your activities e.g.
class BaseActivity extends AppCompatActivity {
@Override
void onBackPressed() { }
}
and then make all of your activities inherit from this class
class MyActivity1 extends BaseActivity { ... }
class MyActivity2 extends BaseActivity { ... }
class MyActivity3 extends BaseActivity { ... }
And all of your activities now wouldn't react to any back press event!
Create a BaseActivity and override onBackPressed() method with required logic And extend BaseActivity in all Activity
abstract class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onBackPressed() {
//super.onBackPressed()
}
}
extend this BaseActivity instead of AppCompatActivity
class MainActivity : BaseActivity() {
//Your code
}
If you want to handle back button manually for some Activity then just override it for those Activity.
If you are using FragmentActivity or AppCompatActivity you can do this with OnBackPressedDispatcher that controls dispatching system back presses.
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(@NonNull Activity activity,
@Nullable Bundle savedInstanceState) {
if (activity instanceof FragmentActivity) {
((FragmentActivity) activity).getOnBackPressedDispatcher()
.addCallback(new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
// nothing to do
}
});
}
}
@Override
public void onActivityStarted(@NonNull Activity activity) {
}
@Override
public void onActivityResumed(@NonNull Activity activity) {
}
@Override
public void onActivityPaused(@NonNull Activity activity) {
}
@Override
public void onActivityStopped(@NonNull Activity activity) {
}
@Override
public void onActivitySaveInstanceState(@NonNull Activity activity,
@NonNull Bundle outState) {
}
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
}
});
}
}
AndroidManifest.xml:
<application
android:name=".App"
...
/>