在Android中使用片段时,请重新按下

在Android中使用片段时,请重新按下,第1张

概述我在我的应用程序中使用 Android滑块菜单,使用导航抽屉,而应用程序中使用Fragments,而不是活动. 当我打开抽屉时,点击一个片段出现的项目.我使用以下代码从一个片段移动到另一个片段: Fragment fragment = null;fragment = new GalleryFragment(selectetdMainMenu.getCategoryID()); 我在我的应用程序中使用 Android滑块菜单,使用导航抽屉,而应用程序中使用Fragments,而不是活动.
当我打开抽屉时,点击一个片段出现的项目.我使用以下代码从一个片段移动到另一个片段:
Fragment fragment = null;fragment = new galleryFragment(selectetdMainMenu.getcategoryID());                    FragmentTransaction ft = getFragmentManager().beginTransaction();                    ft.addToBackStack("menuFrag");                    ft.add(R.ID.frame_container,fragment,"menuFrag");                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);                    ft.commit();

以这种方式,我可以从一个片段到另一个片段,但是我没有在后面的按钮按下来到前一个片段.我设法提出了这个代码来处理DraA被初始化的MainActivity中的后退:

@OverrIDepublic boolean onKeyDown(int keyCode,KeyEvent event) {    super.onKeyDown(keyCode,event);    if (keyCode == KeyEvent.KEYCODE_BACK) {        Fragment fragment_byTag = fragmentManager.findFragmentByTag("menuFrag");        Fragment menuFragment_by_tag = fragmentManager.findFragmentByTag("galleryFrag");        Fragment commentsFrag_by_tag = fragmentManager.findFragmentByTag("commentsFrag");        Fragment dealDetail = fragmentManager.findFragmentByTag("promoFrag");            if(commentsFrag_by_tag != null){                if (commentsFrag_by_tag.isVisible()) {                    Log.e("comments back  "," clicked");                    //menuDetailsFrag.onBackpressed();                    FragmentManager fragmentManager = getSupportFragmentManager();                    fragmentManager.beginTransaction().remove(commentsFrag_by_tag).commit();                    fragmentManager.beginTransaction().show(menuFragment_by_tag).commit();                }            }else if(menuFragment_by_tag.isVisible()){                Log.e("menu back  "," clicked");                menuDetailsFrag.onBackpressed();                FragmentManager fragmentManager = getSupportFragmentManager();                fragmentManager.beginTransaction().remove(menuFragment_by_tag).commit();                fragmentManager.beginTransaction().show(fragment_byTag).commit();            }        }    return false;}

有时这样做有效,但大部分时间都失败了.如果一个更好的导航方式可以显示,我将非常感激.

解决方法 我通常将onKeyListener设置为onResume中的VIEw.从我学到的,你必须注意在VIEw上设置setFocusableIntouchMode()和requestFocus.

这是我为此目的使用的示例:

@OverrIDepublic 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){                // handle back button                return true;            }            return false;        }    });}
总结

以上是内存溢出为你收集整理的在Android中使用片段时,请重新按下全部内容,希望文章能够帮你解决在Android中使用片段时,请重新按下所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131695.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存