簡體   English   中英

在Android中按后退按鈕應用程序混合

[英]pressing back button application mixes in android

在我的Fragement中按后退按鈕面臨問題。按回我的應用程序與其他片段混合在一起。

誰能幫我

我有4個碎片

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

您的活動中是否有onBackPressed()

從活動中調用新片段時,請不要忘記將addToBackStack設置為null

mFragmentTransaction.addToBackStack(null);

並將onBackPressed()方法添加到活動中以完成后退按鈕過程

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM