Android 当启动其他片段时,应用程序停止
我有两个片段,当在片段1中单击布局时,我想开始片段2 片段1: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
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;
}