Skip to content

Instantly share code, notes, and snippets.

@brucetoo
Last active June 10, 2021 22:45
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brucetoo/f7c9bcabe2ce51610ccf to your computer and use it in GitHub Desktop.
Save brucetoo/f7c9bcabe2ce51610ccf to your computer and use it in GitHub Desktop.
Fragment onKeyPress to listen onBackPress of attached Activity
private void exitFragment(View v) {
//position click detail view in viewpager
int position = (int) v.getTag();
//go back to pre layout'position of this detail view(mean original view)
runExitAnimation(v);
((PhotoView)v).animateTo(imageInfos.get(position), new Runnable() {
@Override
public void run() {
if (!ViewPagerFragment.this.isResumed()) {//fragment be destroyed or onPaused.
return;
}
final FragmentManager fragmentManager = getFragmentManager();
if (fragmentManager != null) {
fragmentManager.popBackStack();//let fragment popBackstack
}
}
});
}
private View.OnKeyListener pressKeyListener = new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {//只监听返回键
if (event.getAction() != KeyEvent.ACTION_UP) {
return true;
}
exitFragment(v);
return true;
}
return false;
}
};
//NOTE:this is important to let the view get the focal point
view.setFocusableInTouchMode(true);
view.requestFocus();
view.setOnKeyListener(pressKeyListener);//add key listener to listen back press
@Hayboy
Copy link

Hayboy commented Oct 7, 2015

int position = (int) v.getTag() Why cast from object to int?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment