Matan Tubul
Matan Tubul

Reputation: 794

onKey method never execute

I implemented an override to the back button key in the device. now for some reason the method onKey never execute and there fore when i click on the back button the application is minimize to the back instead doing the onKey code. i am not sure what is the problem so i will upload my all code.

This is my code:

@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;
            }
        });
    }

Upvotes: 0

Views: 278

Answers (2)

Kunal Khaire
Kunal Khaire

Reputation: 327

What results do you get when you override onBackPressed() ?

Upvotes: 0

Nicolas Cortell
Nicolas Cortell

Reputation: 649

Try this:

public class MyClass implements OnKeyListener {
...

Then override the method onKey

@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
    //do what you want
    return false;
}

Upvotes: 1

Related Questions