java - 如何使用两个片段之间发送的数据修改 ArrayList?
问题描述
我有一个数组列表,它负责将一组练习名称存储为“锻炼”。位于 Fragment A 中的数组列表从通过 Fragment B 中的 Bundle 发送的参数中获取数据。
当用户想要选择一个练习时,他们按下片段 A 上的 2 个按钮选项,该选项填充片段 B 上的不同练习名称。当在片段 B 中选择一个练习时,练习名称将被发送回片段 A。
从 Fragment B 获取的参数旨在附加到 Fragment A 中的数组列表中,但是每次重新加载 Fragment A 时,数组列表都会刷新,因此会删除之前保存的练习。我知道这是因为new ArrayList<String>()
是在 Fragment A 的 onCreateView 中定义的,但是有没有办法只能创建一次?(关于片段 A 的初始创建,而不是片段 B 和 A 之间的每次转换)。
片段 A 的 OnCreateView:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View view =inflater.inflate(R.layout.fragment_editor, container, false);
//BUTTON SETUP
final Button addUpButton = (Button) view.findViewById(R.id.btnAddUpper);
addUpButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newExe(addUpButton);
}
});
final Button addLowButton = (Button) view.findViewById(R.id.btnAddLower);
addLowButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
newExe(addLowButton);
}
});
ListView listView = (ListView) view.findViewById(R.id.lstWorkout);
//CREATE AN ARRAY LIST TO AMMEND WITH EXERCISES
workoutSave = new ArrayList<String>();
if (getArguments() == null) {
return view;
}
else{
getValue= getArguments().getString("Movement");
workoutSave.add(getValue);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), R.layout.item_list, R.id.txtWorkout, workoutSave);
adapter.notifyDataSetChanged();
listView.setAdapter(adapter);
}
return view;
}
按下列表项时如何从 Fragment B 重新加载 Fragment A:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String exercise = lstExe.get(position);
Fragment myFragment = new EditorFragment();
Bundle args = new Bundle();
args.putString("Movement", exercise);
myFragment.setArguments(args);
getFragmentManager().beginTransaction().add(R.id.frame_layout,myFragment).commit();
}
});