gpt4 book ai didi

android - 从 Activity 的 onCreate 访问 Fragment View

转载 作者:IT老高 更新时间:2023-10-28 21:59:35 25 4
gpt4 key购买 nike

我正在为 Android 制作我的第一个应用程序,并且我有一个 Fragment 被添加到我的 Activity 中的 Activity > 的 onCreate() 方法。我面临的问题是我无法从 ActivityonCreate() 方法中找到 Fragment 中包含的任何 View .

其他线程认为这是因为 Fragment 还没有被膨胀,所以 findViewById() 将为 Fragment 中包含的任何 View 返回 null .

这就是我的意思:

Activity :

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
System.out.println("activity onCreate");
setContentView(R.layout.activity_main);

if (savedInstanceState != null) {
return;
}

initialiseUI(); // Fragment added to Activity

System.out.println("end of activity onCreate");
}

fragment :

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
System.out.println("fragment onCreateView");
return inflater.inflate(R.layout.event_log, container, false);
}

这会打印结果:

Activity onCreateonCreate Activity 结束 fragment onCreateView

由于这个顺序,任何访问 ActivityonCreate() 方法中 Fragment View 的尝试(使用 findViewById()) 产生 NullPointerException,因为 FragmentonCreateView() 仅在结束后调用ActivityonCreate()

在添加 Fragment 后使用 FragmentMangerexecutePendingTransactions() 没有帮助。

基本上,我是被迫将问题代码放在ActivityonStart()方法中,而不是onCreate()中,因为 onStart() 发生在 FragmentonCreateView() 之后。

有人知道这里的标准做法是什么,或者我如何使我的 fragment View 访问代码在 ActivityonCreate() 方法中工作?

最佳答案

onCreateView() 中更新您的 View 。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.event_log, container, false);
TextView tv = (TextView) view.findViewById(R.id.text);
tv.setText("hello world");
return view;
}

或者,如果您的更改依赖于您的 Fragment 附加到的 Activity,请使用 onActivityCreated()

@Override
public void onActivityCreated (Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

TextView tv = (TextView) getView().findViewById(R.id.text);
tv.setText(getActivity.getSomeText());
}

关于android - 从 Activity 的 onCreate 访问 Fragment View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12122624/

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