Android 当启动其他片段时,应用程序停止

Android 当启动其他片段时,应用程序停止,android,android-fragments,onclicklistener,Android,Android Fragments,Onclicklistener,我有两个片段,当在片段1中单击布局时,我想开始片段2 片段1: public class NewFlightTab extends Fragment { @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v =inflater.inflate(R

我有两个片段,当在片段1中单击布局时,我想开始片段2

片段1:

public class NewFlightTab extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v =inflater.inflate(R.layout.new_flight,container,false);
        return v;
    }

    @Override
    public void onActivityCreated( Bundle savedInstanceState ){
        super.onActivityCreated(savedInstanceState);
        final RelativeLayout departureCityLayout = ( RelativeLayout )   getActivity().findViewById( R.id.depature_city_layout);
    departureCityLayout.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View v) {
             getActivity().getSupportFragmentManager().beginTransaction().add( R.id.citiesAndAirport, new CitiesAndAirportFragment()).commit();
            }
        });

    }
}
片段2:

public class CitiesAndAirportFragment extends Fragment {
    private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;
    private ArrayList<String> citiesAndAirports;


    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v =inflater.inflate(R.layout.cities_airport_list,container,false);
        return v;
    }

    @Override
    public void onActivityCreated( Bundle savedInstanceState ){
        super.onActivityCreated(savedInstanceState);
        citiesAndAirports.add("Bangalore");
        mRecyclerView = (RecyclerView)   getActivity().findViewById(R.id.citiesAndAirport);
        mRecyclerView.setHasFixedSize(true);
        mLayoutManager = new LinearLayoutManager(getActivity());
        mRecyclerView.setLayoutManager( mLayoutManager );
        mAdapter = new CitiesAndAirportAdapter(citiesAndAirports);
        mRecyclerView.setAdapter( mAdapter );


    }
}
删除:

        mRecyclerView = (RecyclerView)   getActivity().findViewById(R.id.citiesAndAirport);
再次回顾:

 @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.cities_airport_list,container,false);
    mRecyclerView = v.findViewById(R.id.citiesAndAirport);
    return v;
}

此外,在这里输入的代码中,您从未初始化CitiesAndAirport

黄金法则:如果你的应用程序崩溃,那么总是发布日志。实际上,它在调用beginTransaction()的add()时崩溃。尝试在你的事务中用android.R.id.content替换R.id.citiesAndAirport。你提供的id应该是你打开第二个片段的容器的id/。如果要将其放在活动布局中,请提供该根布局的id。
        mRecyclerView = (RecyclerView)   getActivity().findViewById(R.id.citiesAndAirport);
 @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.cities_airport_list,container,false);
    mRecyclerView = v.findViewById(R.id.citiesAndAirport);
    return v;
}