onKey方法永远不会执行

时间:2016-01-19 08:19:12

标签: android

我对设备中的后退按键实现了覆盖。现在由于某种原因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;
            }
        });
    }

2 个答案:

答案 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()会得到什么结果?