什么时候必须使用findFragmentById()?

时间:2019-08-15 12:34:19

标签: android fragment

在将片段添加到活动中之后,该机制具有使该片段类成为对象形式并使用fragmentmanager将该片段添加到活动中的机制,请考虑我想编写代码,如果用户在活动上单击按钮,它将更改按钮名称片段中。

因为我有一个来自片段的对象,所以我可以轻松地在(活动的)按钮的clicklistener中编写代码,以在片段中执行更改片段中按钮文本的方法。

但是我看到他们说您必须使用findFragmentById获取对fragment的引用,并使用fragment的id来对fragment进行引用,然后执行该方法!当我在活动中有片段对象时,findFragmentById的用途是什么?!

我的意思是这是一个类,我们可以在其对象上执行其方法,为什么我们改用ID?

2 个答案:

答案 0 :(得分:0)

活动不应保留对该片段的引用。因为如果需要内存,您应该允许片段管理器杀死该片段,并在需要时重新创建片段

Fragment fragment = fragmentManager.findFragmentByTag("fragmentTag")
Button buttonToBeChanged = fragment.view.findViewById(R.id.buttn_id)

答案 1 :(得分:0)

要在片段管理器中添加片段时,请添加TAG

FragmentManager manager= getSupportFragmentManager();
manager.beginTransaction().add(R.id.fragment_container,fragment,HomeTAG).commit();

然后检查当前观看片段是否为HomeFragment使用

Fragment currentFragment=manager.findFragmentById(R.id.fragment_container);
if (currentFragment.getTag().equals(HomeTAG)){
       //code
}