Java 在方法中向arraylist添加项,但在其他方法中为空;
我使用arrayList将用户选择的项存储在一个方法中,但是当我尝试在其他方法中使用存储的项时,列表是空的。如何使其项用于其他方法 这就是整个片段代码 此方法由自定义接口覆盖 这是将项目添加到arraylist的位置 @凌驾 公共作废对话框SelectEdItems(列表项){ 列表=新的ArrayList() processBatch方法 我想在这个方法中使用存储在arraylist中的项 使arraylist在声明时保持静态,解决了我的问题Java 在方法中向arraylist添加项,但在其他方法中为空;,java,android,Java,Android,我使用arrayList将用户选择的项存储在一个方法中,但是当我尝试在其他方法中使用存储的项时,列表是空的。如何使其项用于其他方法 这就是整个片段代码 此方法由自定义接口覆盖 这是将项目添加到arraylist的位置 @凌驾 公共作废对话框SelectEdItems(列表项){ 列表=新的ArrayList() processBatch方法 我想在这个方法中使用存储在arraylist中的项 使arraylist在声明时保持静态,解决了我的问题 检查首先调用哪个方法?当用户选择items和pro
检查首先调用哪个方法?当用户选择items和processBatch()时,首先调用dialogSelectedItems()在submitcan update full code fragment?can update full code fragment?时被调用,您的意思是发布所有完整的代码片段。我认为您使用的是不同的实例,因此它的列表为空。如果您需要不同的实例,则可以使用静态变量
/**
* A simple {@link Fragment} subclass.
*/
public class AddBatchFragment extends Fragment implements AdapterView.OnItemSelectedListener,View.OnClickListener,OnDialogSelectedItems{
private EditText batchCode,batchName;
private static TextView subjectText;
private List<String> subjects = new ArrayList<>();
private Spinner batchCourseSpinner,batchsemesterSpinner;
private Button createBatchBtn,resetBatchBtn,selectSubjects;
private Spinner courseSpinner,semesterSpinner,subjectSpinner;
private IBatchDao iBatchDao;
private CourseTasks.selectCoursesAsyncTask coursesAsyncTask;
private SemesterTasks.selectSemestersAsyncTask semestersAsyncTask;
private List<CourseModel> courseModels;
private List<SubjectModel> subjectModels = new ArrayList<>();
private List<SemesterModel> semesterModels;
private ArrayAdapter<CourseModel> courseAdapter;
private ArrayAdapter<SemesterModel> semesterAdapter;
private SelectSubjectsDialog subjectsDialog;
private CourseModel course;
private SemesterModel semester;
private long addBatchStatus;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//dao
// iSubjectDao = new SubjectDao(getActivity());
iBatchDao = new BatchDao(getActivity());
//tasks
coursesAsyncTask = new CourseTasks.selectCoursesAsyncTask(getActivity() , new CourseDao(getActivity()));
semestersAsyncTask = new SemesterTasks.selectSemestersAsyncTask(getActivity() , new SemesterDao(getActivity()));
//retrieving values from tasks
try {
// subjectModels = subjectAsyncTask.execute().get();
courseModels = coursesAsyncTask.execute().get();
semesterModels = semestersAsyncTask.execute().get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
//creating spinner adapters
courseAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_dropdown_item,courseModels);
courseAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
semesterAdapter = new ArrayAdapter<>(getActivity(),android.R.layout.simple_spinner_dropdown_item,semesterModels);
semesterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
View view = inflater.inflate(R.layout.fragment_add_batch, container, false);
//edit texts
batchCode = view.findViewById(R.id.batch_code);
batchName = view.findViewById(R.id.batch_name);
//spinners
courseSpinner = view.findViewById(R.id.batch_course_spinner);
courseSpinner.setAdapter(courseAdapter);
courseSpinner.setOnItemSelectedListener(this);
semesterSpinner = view.findViewById(R.id.batch_semester_spinner);
semesterSpinner.setAdapter(semesterAdapter);
semesterSpinner.setOnItemSelectedListener(this);
//buttons
selectSubjects = view.findViewById(R.id.batch_subjects_dropdown);
selectSubjects.setOnClickListener(this);
createBatchBtn = view.findViewById(R.id.create_batch_btn);
createBatchBtn.setOnClickListener(this);
resetBatchBtn = view.findViewById(R.id.reset_batch_btn);
resetBatchBtn.setOnClickListener(this);
//text view
subjectText = view.findViewById(R.id.selected_subjects);
subjectText.setText("no course_unit selected");
return view;
}
*onCreateOptionMenu method*
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.course_menu , menu);
}
//item action
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return true;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()){
case R.id.batch_course_spinner:
//select course object
course = courseModels.get(position);
// Toast.makeText(getActivity() , "course item "+course.getName()+" course code "+course.getCode(),Toast.LENGTH_LONG).show();
break;
case R.id.batch_semester_spinner:
semester = semesterModels.get(position);
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.batch_subjects_dropdown:
subjectsDialog = new SelectSubjectsDialog();
subjectsDialog.show(getActivity().getSupportFragmentManager() , "select subject");
break;
case R.id.create_batch_btn:
processBatch();
break;
case R.id.reset_batch_btn:
resetFields();
break;
}
}
for(String s: items) {
subjects.add(s);
}
Log.d("sub", "dialogSelectedItems: selected subject string size "+subjects.size());
}
private void resetFields(){
batchName.setText("");
batchCode.setText("");
}
private void processBatch(){
String batchname = batchName.getText().toString();
String batchcode = batchCode.getText().toString();
Toast.makeText(getActivity() , "sujectModels "+subjectModels.size() , Toast.LENGTH_LONG).show();
Toast.makeText(getActivity() , "subs size "+subjects.size() , Toast.LENGTH_LONG).show();
}
public class AddBatchFragment extends Fragment implements AdapterView.OnItemSelectedListener,View.OnClickListener,OnDialogSelectedItems{
private static List<String> subjects = new ArrayList<>();
@Override
public void dialogSelectedItems(List<String> items) {
List<SubjectModel> list = new ArrayList<>();
for (String s : items) {
subjects.add(s);
}
private void processBatch(){
Toast.makeText(getActivity() , "subs size "+subjects.size()+" item at 2 "+subjects.get(2) , Toast.LENGTH_LONG).show();