我对设备中的后退按键实现了覆盖。现在由于某种原因onKey方法永远不会执行,因此当我点击后退按钮时,应用程序最小化到后面而不是执行onKey代码。 我不确定是什么问题,所以我将上传我的所有代码。
这是我的代码:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().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) {
String frag_name = getFragmentManager().getBackStackEntryAt(getFragmentManager().getBackStackEntryCount() - 1).getName();
Log.d("frag name is", frag_name);
Fragment fragment = null;
switch (frag_name){
case "back_to_attending":
fragment = new AttendingListFragmentController();
break;
case "back_to_invitations":
fragment = new InvitationsFragmentController();
break;
case "waiting_list":
fragment = new WaitingEventListFragmentController();
break;
default:
break;
}
if(fragment != null){
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.popBackStackImmediate();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment,frag_name).addToBackStack(frag_name).commit();
}
}
}
return false;
}
});
}
答案 0 :(得分:1)
试试这个:
public class MyClass implements OnKeyListener {
...
然后覆盖方法onKey
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//do what you want
return false;
}
答案 1 :(得分:0)
覆盖onBackPressed()会得到什么结果?