所以我有一个奇怪的问题,我现在无法解决。
RoomGamesFragment
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
roomActivity = (RoomActivity) activity;
gameTabContainerView = (LinearLayout) roomActivity.findViewById(R.id.game_tab_container); // findViewById returns null
// NullPointerException
gameTabContainerView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
打开包含片段的活动时,这完全正常。但问题是:如果我将活动保持打开状态,将应用程序置于后台(通过单击主页按钮),使用其他应用程序,然后在一段时间后再次打开我的应用程序,我会得到NullPointerException,因为{{1} }现在返回null。
我怎么能阻止这个?活动是否从堆栈中删除,从而导致异常?我知道我可以检查findViewById
,但我需要null
,即使我在后台返回应用程序时也是如此。
答案 0 :(得分:4)
您不应在onAttach()
中执行此代码,而应在onActivityCreated()
中执行此代码。这是因为尚未创建“视图”。 onAttach()
高于Fragment生命周期中的onCreateView()
。
了解更多信息:http://developer.android.com/guide/components/fragments.html#Creating