首页 > 解决方案 > 如何先获取 Intent 然后只创建一个片段?

问题描述

在我的 onCreate 方法的一项活动中,我将 ArrayList 从意图传递到片段以创建片段。但是,我意识到它会抛出空指针异常,因为片段可能在接收意图之前创建?我应该如何解决这个问题?在我的 onCreate 方法中。

monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");

    cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;





    monitorListFragment = MonitorListFragment.newInstance(cholesterol_monitor);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.fragment_monitor_layout, monitorListFragment)
            .commit();

标签: android-fragmentsandroid-intentandroid-asynctaskoncreateandroid-intentservice

解决方案


首先检查 monitor_list 是否不为空,然后检查是否不替换片段

    ArrayList<CholesterolMonitor> monitor_list= this.getIntent().getParcelableArrayListExtra("monitorList");
    if (monitor_list.size()>0){
        cholesterol_monitor = (ArrayList<CholesterolMonitor>) monitor_list;
        monitorListFragment = MonitorListFragment.newInstance(cholesterol_monitor);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.fragment_monitor_layout, monitorListFragment)
                .commit();
    }else // list is null

推荐阅读