I have a BaseActivity()
that have many activities and a BaseFragment()
that have many fragments. Each activity contains 2-3 fragments and I need to make a generic method to handle each onBackPressed from all fragments (all - means all app screens) but this method should be in Base Fragment()
(every fragment extends it). I supose that I'll need a kind of listener to tie OnBackPressed()
from BaseActivity()
to genericMethod()
from BaseFragment()
Thanks in advice.
The simplest solution rest to be a bit "hard programmed" in my case, like I mentioned in my question I need a method from BaseFragment()
to handle all back press actions from all screens that means all fragments that extends this BaseFragment()
.
@Sharp Edge solution may be accepted but why to handle it in each SimpleActivity()
that extends BaseActivity()
if I can just add a single method in BaseFragment()
and all simple activities that extends BaseActivity()
will don't care about that.
@escape-llc solution is confused and not the expected one... I can handle it easier using EventBus or Otto and send from onResume()
from each fragment to SimpleActivity()
. So I'll receive the actual open fragment and I'll now what action to do when onBackPressed()
is executed...
So, like I said, my solution is to use just a simple generic method in BaseFragment()
:
public void doBackBtnPressedAction(View view) {
view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//logical part, in my case some server requests
return true;
}
}
return false;
}
});
}