在将片段添加到活动中之后,该机制具有使该片段类成为对象形式并使用fragmentmanager将该片段添加到活动中的机制,请考虑我想编写代码,如果用户在活动上单击按钮,它将更改按钮名称片段中。
因为我有一个来自片段的对象,所以我可以轻松地在(活动的)按钮的clicklistener中编写代码,以在片段中执行更改片段中按钮文本的方法。
但是我看到他们说您必须使用findFragmentById获取对fragment的引用,并使用fragment的id来对fragment进行引用,然后执行该方法!当我在活动中有片段对象时,findFragmentById的用途是什么?!
我的意思是这是一个类,我们可以在其对象上执行其方法,为什么我们改用ID?
答案 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
}