如何从 main activity 中的片段正确检索视图
How to correctly retrieve view from fragment in main activity
有没有一种特定的方式或特定的时刻,我可以在我的 MainActivity 中从 Fragment 中检索视图,并确保该元素已经初始化?
我当然在我的 MainActivity 中使用了 findViewById()
方法,但如果 Fragment 尚未初始化,它 returns null,所以我尝试通过广播调用 MainActivity 的初始化方法在 onStart()
片段方法中,当应用程序启动时它可以工作,但是当屏幕旋转时,初始化方法 returns null 并且应用程序崩溃并显示 NullPointerException
.
糟糕,现在我已经将所有更改片段视图的代码放在片段本身中,并且我已经实现了 Activity 和片段之间正确通信的接口,因此我可以修改检索片段变量时无需担心内容视图。对于最后这些,我已经在充气器的 onCreateView() 方法中初始化了它们,它工作正常。
您需要在 oncreateView() 中执行此操作
View mView = inflater.inflate(R.layout.fragmentA, container, false);
然后你可以得到这样的观点
textView = (TextView) mView.findViewById(R.id.textView);
现在您可以使用此视图了。
有没有一种特定的方式或特定的时刻,我可以在我的 MainActivity 中从 Fragment 中检索视图,并确保该元素已经初始化?
我当然在我的 MainActivity 中使用了 findViewById()
方法,但如果 Fragment 尚未初始化,它 returns null,所以我尝试通过广播调用 MainActivity 的初始化方法在 onStart()
片段方法中,当应用程序启动时它可以工作,但是当屏幕旋转时,初始化方法 returns null 并且应用程序崩溃并显示 NullPointerException
.
糟糕,现在我已经将所有更改片段视图的代码放在片段本身中,并且我已经实现了 Activity 和片段之间正确通信的接口,因此我可以修改检索片段变量时无需担心内容视图。对于最后这些,我已经在充气器的 onCreateView() 方法中初始化了它们,它工作正常。
您需要在 oncreateView() 中执行此操作
View mView = inflater.inflate(R.layout.fragmentA, container, false);
然后你可以得到这样的观点
textView = (TextView) mView.findViewById(R.id.textView);
现在您可以使用此视图了。