Fragment pressing back button

后端 未结 16 2351
清歌不尽
清歌不尽 2020-11-29 20:18

I am now having an activity containing fragments

[1] , [2] , [3] , [4]

If pressing buttons , [3] , it can be redirected to [4]

I would like to imp

16条回答
  •  野趣味
    野趣味 (楼主)
    2020-11-29 21:00

    Solution for Pressing or handling back button in Fragment.

    The way I solved my issue I am sure it will helps you too:

    1.If you don't have any Edit Text-box in your fragment you can use below code

    Here MainHomeFragment is main Fragment (When I press back button from second fragment it will take me too MainHomeFragment)

        @Override
        public void onResume() {
    
        super.onResume();
    
        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_UP && keyCode == KeyEvent.KEYCODE_BACK){
    
                    MainHomeFragment mainHomeFragment = new SupplierHomeFragment();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, mainHomeFragment);
                    fragmentTransaction.commit();
    
                    return true;    
                }    
                return false;
            }
        }); }
    

    2.If you have another fragment named as Somefragment and it has Edit text-box then you can do it by this way.

    private EditText editText;
    

    Then In,

    onCreateView():    
    editText = (EditText) view.findViewById(R.id.editText);
    

    Then Override OnResume,

    @Override
    public void onResume() {
        super.onResume();
    
        editText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    editTextOFS.clearFocus();
                    getView().requestFocus();
                }
                return false;
            }
        });
    
        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_UP && keyCode == KeyEvent.KEYCODE_BACK){
    
                    MainHomeFragment mainHomeFragment = new SupplierHomeFragment();
                    android.support.v4.app.FragmentTransaction fragmentTransaction =
                            getActivity().getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.fragment_container, mainHomeFragment);
                    fragmentTransaction.commit();
    
                    return true;
    
                }
    
                return false;
            }
        });
    
    }
    

    That's all folks (amitamie.com) :-) ;-)

提交回复
热议问题