当前位置: 代码迷 >> Android >> 片段onAttach中的NullPointerException for findViewById
  详细解决方案

片段onAttach中的NullPointerException for findViewById

热度:49   发布时间:2023-08-04 12:09:17.0

所以我有一个奇怪的问题,我现在无法解决。

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) {
        }
    });
}

当打开包含片段的活动时,这完全可以正常工作。 但这是问题所在:如果我将活动保持打开状态,则将应用程序置于后台(通过单击“主页”按钮),使用其他应用程序, findViewById一段时间后再次打开我的应用程序,我会收到NullPointerException,因为findViewById现在返回null 。 我该如何预防? 是否从堆栈中删除了活动,从而导致异常? 我知道我可以只检查null ,但是我需要onClickListener ,即使在后台运行后返回到应用程序也是如此。

您不应在onAttach()执行此代码,而应在onActivityCreated() 这是因为尚未创建“视图”。 onAttach()在Fragment生命周期中位于onCreateView()之上。

有关更多信息: :

  相关解决方案