如何通过单击 ListView 中的项目转到另一个片段?
How can I go to another fragment by clicking on an item in a ListView?
我试图通过单击 ListView 中的项目转到另一个片段(从 AirportPostFragment 到 FinishPostFragment)。
为什么这不起作用?
(getActivity()) 有红色下划线。
Error:(61, 66) 错误:class FinishPostFragment 中的构造函数 FinishPostFragment 无法应用于给定类型;
要求:没有参数
发现:Activity
原因:实际和形式参数列表的长度不同
代码:
public class AirportPostFragment extends Fragment {
String stringsList[];
ArrayAdapter<String> adapter;
private ListView listViewAirports;
private EditText editSearch;
Context mycontext;
XmlPullParser parser;
HashSet airport_list;
HashSet<String> list = new HashSet<>();
HashSet<String> newList = new HashSet<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_airportpost, container, false);
listViewAirports = (ListView) rootView.findViewById(R.id.listView_airports);
editSearch = (EditText) rootView.findViewById(R.id.search_airport);
adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1, stringsList);
listViewAirports.setAdapter(adapter);
listViewAirports.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
FragmentManager fm = getActivity().getFragmentManager();
fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment(getActivity())).commit();
}
});
searchAirport();
return rootView;
}
这是我的 FinishPostFragment 代码:
public class FinishPostFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false);
return rootView;
}
}
这是我的 FinishPostFragment 代码:
public class FinishPostFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false);
return rootView;
}
}
看起来问题是您没有采用 Activity 的 FinishPostFragment 的构造函数。
由于您始终可以在 Fragment 中使用 getActivity()
,因此无需在构造函数中向其传递 Activity。
您可以将其更改为:
fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment()).commit();
我试图通过单击 ListView 中的项目转到另一个片段(从 AirportPostFragment 到 FinishPostFragment)。 为什么这不起作用?
(getActivity()) 有红色下划线。
Error:(61, 66) 错误:class FinishPostFragment 中的构造函数 FinishPostFragment 无法应用于给定类型; 要求:没有参数 发现:Activity 原因:实际和形式参数列表的长度不同
代码:
public class AirportPostFragment extends Fragment {
String stringsList[];
ArrayAdapter<String> adapter;
private ListView listViewAirports;
private EditText editSearch;
Context mycontext;
XmlPullParser parser;
HashSet airport_list;
HashSet<String> list = new HashSet<>();
HashSet<String> newList = new HashSet<>();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_airportpost, container, false);
listViewAirports = (ListView) rootView.findViewById(R.id.listView_airports);
editSearch = (EditText) rootView.findViewById(R.id.search_airport);
adapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_list_item_1, stringsList);
listViewAirports.setAdapter(adapter);
listViewAirports.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
FragmentManager fm = getActivity().getFragmentManager();
fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment(getActivity())).commit();
}
});
searchAirport();
return rootView;
}
这是我的 FinishPostFragment 代码:
public class FinishPostFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false);
return rootView;
}
}
这是我的 FinishPostFragment 代码:
public class FinishPostFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_finishpost, container, false);
return rootView;
}
}
看起来问题是您没有采用 Activity 的 FinishPostFragment 的构造函数。
由于您始终可以在 Fragment 中使用 getActivity()
,因此无需在构造函数中向其传递 Activity。
您可以将其更改为:
fm.beginTransaction().replace(R.id.content_main, new FinishPostFragment()).commit();