我有一个framelayout
,在我的Activity
中调用一次,在其他Fragment
中调用不同的时间(经过Activity
的同一个framelayout
)。
在我的MainActivity.class
中,我需要知道我的framelayout
在哪个片段中,例如,我需要知道framelayout
使用的是MyFragment1.class
还是MyFragment2.class
。
我需要这样的东西(在这个例子中,log
必须说me “you are in MyFragment1”):
FrameLayout frameLayout = (FrameLayout) findViewById(R.id.framelayout);
getSupportFragmentManager().beginTransaction()
.replace(R.id.framelayout,new MyFragment1())
.commit();
if (framelayout.getname.equals("package.MyFragment1.class"))
Log.d("debug", "you are in MyFragment1");
else if (framelayout.getname.equals("package.MyFragment2.class"))
Log.d("debug", "you are in MyFragment2");
我怎么能那样做呢?
7条答案
按热度按时间sigwle7e1#
您需要使用以下代码从
FrameLayout
获取运行时片段然后使用
instanceof
检查片段类型a2mppw5e2#
"我找到了解决之道"
vlf7wbxs3#
您需要使用以下示例进行检查
你需要检查你的fragment对象:
ergxz8rk4#
我有一个
ContentFrameLayout
这个ID是Fragment_Main
您可以使用
FrameLayout
到
Activity
写这个代码到
Fragment
写入此代码yx2lnoni5#
您正在替换此处的片段。因此
fragmentInFrame
仍将引用旧片段。因此,在替换之后,您需要通过再次查找来更新
fragmentInFrame
变量。现在,检查
fragmentInFrame
将起作用。不要忘记删除
final
关键字。fjnneemd6#
在你的每一个Fragment类中,只需在
onCreateView
方法里面定义Log。uelo1irk7#
接受来自@Jéwôm的答案'在我这里确实能正常工作。注意,您必须指定root_framelayout R.id FrameLayout来保存所有片段并实现非弃用的androidx方法
这是onPreferenceStartFragment()中使用的id: