怎么判断当前activity上显示的是哪个fragment??

lqd754319021 2015-08-10 02:58:07
一个activity上可以切换fragment,我想监听物理键,但要在不同的fragment上具体方法不一样,可以怎么办?求指教。。。
...全文
18988 19 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
Please_not_do_this 2017-07-03
  • 打赏
  • 举报
回复
若fragment存在嵌套 17L的方法就不管用了,还在想怎么弄。。。。。。
winnerWangDoIt 2016-10-09
  • 打赏
  • 举报
回复
感谢17楼,直接拿来用
lqpgjv 2016-08-04
  • 打赏
  • 举报
回复
public Fragment getVisibleFragment(){ FragmentManager fragmentManager = MainActivity.this.getSupportFragmentManager(); List<Fragment> fragments = fragmentManager.getFragments(); for(Fragment fragment : fragments){ if(fragment != null && fragment.isVisible()) return fragment; } return null; }
  • 打赏
  • 举报
回复
不用那么麻烦,声明一个属性String 或者 int 在你的activity,当 replace的时候 给这个标记复制,需要知道 当前是哪个fragment 就获得这个值根据这个值判断,类似于打补丁但是用着很方便
StoneHui_ 2015-08-11
  • 打赏
  • 举报
回复
引用 14 楼 lqd754319021 的回复:
[quote=引用 12 楼 u014165119 的回复:] [quote=引用 11 楼 lqd754319021 的回复:] [quote=引用 10 楼 u014165119 的回复:] [quote=引用 9 楼 lqd754319021 的回复:] [quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的[/quote] 关键是这里无法绑定每个控件的事件,因为不会直接去操作它们,而是在它们共有的activity的onkeydown方法中处理啊[/quote] Fragment中自定义一个onKeyDown方法,Activity接受到点击事件后调用Fragment的onKeyDown方法把参数传递给Fragment处理。由于每个Fragment都要处理点击事件,也可以把onKeyDown方法放到父类里面。[/quote] 这里主要就是我不知道在onKeyDown方法中怎么来区分listview和右边的fragment。感觉没办法啊,比较矛盾。因为两者同时存在,也就相当于一次按键,两种行为,太怪异了。 不过这个帖子的问题已经解决了,就结贴了吧!感谢您的回答,如果对我的疑问有好的建议,可以回复。[/quote] ListView有onItemClickListener()啊。就算不用这个方法,ListView中每个要点击的控件和Fragment中的控件也都有ID啊,根据ID判断是哪一个控件不就可以了
引用 14 楼 lqd754319021 的回复:
[quote=引用 12 楼 u014165119 的回复:] [quote=引用 11 楼 lqd754319021 的回复:] [quote=引用 10 楼 u014165119 的回复:] [quote=引用 9 楼 lqd754319021 的回复:] [quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的[/quote] 关键是这里无法绑定每个控件的事件,因为不会直接去操作它们,而是在它们共有的activity的onkeydown方法中处理啊[/quote] Fragment中自定义一个onKeyDown方法,Activity接受到点击事件后调用Fragment的onKeyDown方法把参数传递给Fragment处理。由于每个Fragment都要处理点击事件,也可以把onKeyDown方法放到父类里面。[/quote] 这里主要就是我不知道在onKeyDown方法中怎么来区分listview和右边的fragment。感觉没办法啊,比较矛盾。因为两者同时存在,也就相当于一次按键,两种行为,太怪异了。 不过这个帖子的问题已经解决了,就结贴了吧!感谢您的回答,如果对我的疑问有好的建议,可以回复。[/quote] ListView有onItemClickListener()啊。就算不用这个方法,ListView中每个要点击的控件和Fragment中的控件也都有ID啊,根据ID判断是哪一个控件不就可以了
lqd754319021 2015-08-11
  • 打赏
  • 举报
回复
引用 12 楼 u014165119 的回复:
[quote=引用 11 楼 lqd754319021 的回复:] [quote=引用 10 楼 u014165119 的回复:] [quote=引用 9 楼 lqd754319021 的回复:] [quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的[/quote] 关键是这里无法绑定每个控件的事件,因为不会直接去操作它们,而是在它们共有的activity的onkeydown方法中处理啊[/quote] Fragment中自定义一个onKeyDown方法,Activity接受到点击事件后调用Fragment的onKeyDown方法把参数传递给Fragment处理。由于每个Fragment都要处理点击事件,也可以把onKeyDown方法放到父类里面。[/quote] 这里主要就是我不知道在onKeyDown方法中怎么来区分listview和右边的fragment。感觉没办法啊,比较矛盾。因为两者同时存在,也就相当于一次按键,两种行为,太怪异了。 不过这个帖子的问题已经解决了,就结贴了吧!感谢您的回答,如果对我的疑问有好的建议,可以回复。
黄小楼 2015-08-10
  • 打赏
  • 举报
回复
你就看看当前显示的fragment是哪个啊? 有一个方法是isshow的
StoneHui_ 2015-08-10
  • 打赏
  • 举报
回复
引用 11 楼 lqd754319021 的回复:
[quote=引用 10 楼 u014165119 的回复:] [quote=引用 9 楼 lqd754319021 的回复:] [quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的[/quote] 关键是这里无法绑定每个控件的事件,因为不会直接去操作它们,而是在它们共有的activity的onkeydown方法中处理啊[/quote] Fragment中自定义一个onKeyDown方法,Activity接受到点击事件后调用Fragment的onKeyDown方法把参数传递给Fragment处理。由于每个Fragment都要处理点击事件,也可以把onKeyDown方法放到父类里面。
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
引用 10 楼 u014165119 的回复:
[quote=引用 9 楼 lqd754319021 的回复:] [quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的[/quote] 关键是这里无法绑定每个控件的事件,因为不会直接去操作它们,而是在它们共有的activity的onkeydown方法中处理啊
StoneHui_ 2015-08-10
  • 打赏
  • 举报
回复
引用 9 楼 lqd754319021 的回复:
[quote=引用 6 楼 u014165119 的回复:] 第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗? [/quote] 各自设置自己的事件监听就行了,不会有冲突的
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
引用 6 楼 u014165119 的回复:
第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
学习了,谢谢。还有个问题,我的listview也是个fragment,和详细的fragment属于左右屏的关系,可以让按钮的点击事件在listview和右侧的fragment都能使用,但又不相互冲突吗?
智行码上说 2015-08-10
  • 打赏
  • 举报
回复
6楼正解,没有触屏,响应事件也是一样的
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
引用 4 楼 lqd754319021 的回复:
我觉得还可以说一下,这是一个没有触屏的项目,完全靠按键。并且listview切换fragment,也是靠按键,同样,要怎么跟右边的fragment来区分??
也许可以用onAttachFragment()试试
StoneHui_ 2015-08-10
  • 打赏
  • 举报
回复
第一种:用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候就可以使用关键字 “instance of”判断mCurrentFragment属于哪一个Fragment,然后调用相应的方法。 第二种:写一个抽象的类继承Fragment,包括一个处理点击事件的抽象想法,你的所有Fragment继承这个父类并实现抽象方法,然后再 使用的时候用一个Fragment类的实例(比如叫mCurrentFragment)维护当前正在显示的Fragment,每次切换都适合把正在显示对Fragment赋值给mCurrentFragment(像这样:mCurrentFragment = 刚刚切换的Fragment),然后在点击的时候直接调用mCurrentFragment的处理点击事件的方法就行了。
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
引用 1 楼 crazyman2010 的回复:
activity维护fragment列表,切换时标记当前显示的
怎么标记?在fragment中给个状态值吗?我是新手
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
我觉得还可以说一下,这是一个没有触屏的项目,完全靠按键。并且listview切换fragment,也是靠按键,同样,要怎么跟右边的fragment来区分??
lqd754319021 2015-08-10
  • 打赏
  • 举报
回复
引用 2 楼 jxgzycxyxhp 的回复:
功能说具体点
好吧,我也觉得要再具体点,要不然回复我也看不明白。 情况是这样的,一个activity上,左边是listview列表,右边是fragmentlayout布局的fragment,listview每一项对应一个fragment。 现在是不论显示的哪个fragment,我activity的onKeyDown方法中可以调用fragment中的具体处理方法,关键就是不知道怎么在onKeyDown中判断当前是哪个fragment。
智行码上说 2015-08-10
  • 打赏
  • 举报
回复
功能说具体点
M_O_ 2015-08-10
  • 打赏
  • 举报
回复
activity维护fragment列表,切换时标记当前显示的

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧