在android中按下按钮应用程序混合

时间:2015-10-03 08:32:14

标签: java android android-fragments

在我的Fragement中按下后退按钮面临问题。压缩我的应用程序与其他碎片混合。

任何人都可以帮助我

我有4个Fragements

DealerDetails.java

 rootView.setFocusableInTouchMode(true);
    rootView.requestFocus();
    rootView.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            // Log.i(tag, "keyCode: " + keyCode);
            if (keyCode == KeyEvent.KEYCODE_BACK) {

                // Log.i(tag, "onKey Back listener is working!!!");
                // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                Fragment fragment = new DealerByNamesFragement();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container, fragment).commit();

                return true;
            } else {
                return false;
            }
        }
    });

按后退按钮我想显示DealerByNamesFragement.java

DealerByNamesFragement.java

    rootView.setFocusableInTouchMode(true);
            rootView.requestFocus();
            rootView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // Log.i(tag, "keyCode: " + keyCode);

                        if(keyCode == KeyEvent.KEYCODE_BACK && keyCode == KeyEvent.ACTION_DOWN ) {

                            // Log.i(tag, "onKey Back listener is working!!!");
                            // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                            Fragment fragment = new DealerSearchFragment();
                            FragmentManager fragmentManager = getFragmentManager();
                            fragmentManager.beginTransaction()
                                    .replace(R.id.frame_container, fragment).addToBackStack("tag1").commit();

                        return true;
                    } else {
                        return false;
                    }
                }
            });

By pressing back redirecting to DealerSearchFragment.java

DealerSearchFragment.java

 rootView.setFocusableInTouchMode(true);
            rootView.requestFocus();
            rootView.setOnKeyListener(new View.OnKeyListener() {
                @Override
                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // Log.i(tag, "keyCode: " + keyCode);
                    if (keyCode == KeyEvent.KEYCODE_BACK) {

                        // Log.i(tag, "onKey Back listener is working!!!");
                        // getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

                        Fragment fragment = new HomeFragment();
                        FragmentManager fragmentManager = getFragmentManager();
                        fragmentManager.beginTransaction()
                                .replace(R.id.frame_container, fragment).commit();

                        return true;
                    } else {
                        return false;
                    }
                }
            });

1 个答案:

答案 0 :(得分:0)

您的活动中有onBackPressed()吗?

从活动中调用新片段时,不要忘记将addToBackStack设置为null

mFragmentTransaction.addToBackStack(null);

并向活动添加onBackPressed()方法以完成后退按钮流程

@Override
public void onBackPressed() {
    if (getFragmentManager().getBackStackEntryCount() == 0) {
        this.finish();
    } else {
        getFragmentManager().popBackStack();
    }
}