gpt4 book ai didi

android - Activity 未调用 onAttachFragment

转载 作者:行者123 更新时间:2023-11-29 20:00:34 25 4
gpt4 key购买 nike

我有一个 Activity ,其中 FrameLayout 用作 fragment 容器。每当在此 FrameLayout 中添加一个 fragment 时,我想将此 FrameLayout 设置为可点击(以避免每个点击事件都通过该 fragment )。

我读到我可以使用 onAttachFragment 来检测何时将 fragment 添加到 Activity。

所以我在我的 Activity 中添加了这段代码:

@Override
public void onAttachFragment(Fragment fragment) {
fragment.getView().setClickable(true);
super.onAttachFragment(fragment);
}

但由于某些原因,此方法从未被调用。

最佳答案

调用 onAttachFragment() 时,Fragment 的 View 不会膨胀。引用自docs :

void onAttachFragment(Fragment fragment)

Called when a Fragment is being attached to this activity, immediately after the call to its Fragment.onAttach() method and before Fragment.onCreate().

因此,调用 fragment.getView() 没有任何意义,因为 View 直到 onCreateView()(发生在 onCreate()).

作为替代方法,您可以将 Fragment 的布局设置为可点击或不可点击作为其参数的一部分:

public class MyFragment extends Fragment {

public static MyFragment getInstance(boolean isClickable) {

MyFragment frag = new MyFragment();
Bundle args = new Bundle();

args.putBoolean("key", isClickable);
frag.setArguments(args);

return frag;

}

//...
private boolean isClickable() {
return getArguments().getBoolean("key");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view = //Inflate view...

view.setClickable(isClickable());
return view;

}

或者,您可以采用另一种方式,使用在 FragmentonCreateView() 中调用的 interface,您可以在其中“询问“它所附加的 Activity 的 Root View 是否应该可点击。

关于android - Activity 未调用 onAttachFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36331173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com