我的Activity
成员Fragment
。
在Fragment
我有一些Activity
需要访问的视图对象。因此,Activity
需要知道Fragment
的{{1}}何时完成。
为了实现这一点,我设置了一个回调,以便在onCreateView
的{{1}}(我知道称为Fragment
之后以及onActivityCreated
想要的视图时触发,在这种情况下,按钮不会为空。)
onViewCreated
在我的Activity
我创建了片段并设置了它的回调:
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
if (_didLoadCallback != null)
{
_didLoadCallback.callback();
}
}
如上所述,我需要拥有此挂钩的原因是Activity
需要访问private void initFragment()
{
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
_fragment = MyFragmentClass.newInstance(new Callbacks.VoidCallback()
{
@Override
public void callback()
{
continueInitializationAfterFragmentLoaded();
}
});
fragmentTransaction.add(_root.getId(), _startWorkoutFragment);
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
}
内的查看对象。
在我的Activity
中,我有一个使用getter访问的对象:
Fragment
此按钮在Fragment
。
当我第一次运行程序或重新运行程序时,这非常有效。但是,当我再次点击即时运行时,程序崩溃,因为public Button getButton()
{
return _button;
}
返回空值。
进一步增加了我的困惑是我记录了事件以确保我的对象不为空,奇怪的是,仅使用即时运行(没有重新运行),onCreateView
返回一个第一次调用时(getButton
中的getButton
)不会为空,但是当它触发onCreateView
的回调时,Fragment
调用会突然返回null! / p>
D / Log:co.myapp.app.Widgets.Button {84ba583 V.E ...... ......我。 0,0-0,0}(片段Activity
)D / Log:null (didLoad回调尝试访问按钮后的活动)
但是当我重新运行(或完整版)时,它可以工作:
D / Log:co.myapp.app.Widgets.Button {b0b44a0 V.E ...... ......我。 0,0-0,0} (片段
getButton
)D / Log:co.myapp.app.Widgets.Button {b0b44a0 V.E ...... ......我。 0,0-0,0} (didLoad回调尝试访问按钮后的活动)
你有什么想法吗?或者也许我的初始化回调挂钩做错了什么?
更新我甚至在启动回调之前验证按钮是否为空并且它仍然崩溃了?!
onCreateView