Android:如何从活动访问以更新另一个活动的私有变量

时间:2014-12-06 15:03:02

标签: android android-activity arraylist private start-activity

我正在尝试做类似的事情,首先,有一个MainActivity存储在ArrayList中的课程,这些课程由listview显示。之后,我传递给另一个活动,它被称为ShowDetailActivity,带有startActivity()来显示单击列表视图元素时的课程详细信息。然后,我转到另一个名为EditCourseActivity的活动来编辑ShowDetailActivity所显示的课程。问题是,当我想编辑课程时,我必须访问MainActivity的Arraylist(私有)但我不能通过startActivity(),因为MainActivity确实重新启动(重新安装),这就是为什么没有课程关于arraylist。问题是如何从EditCourseActivity访问MainActivity的arraylist以显示更新的课程?

2 个答案:

答案 0 :(得分:1)

将课程信息存储在单件类

public class CourseHolder{
    public static CourseHolder instance=null;
    public static CourseHolder getInstance(){
        if(instance==null){
            instance=new CourseHolder();
        }
        return instance;
    }
    private Course courses[];
    private CourseHolder(){
        courses=new Course[10];
    }
    public void setCourse(int index, Course course){
        courses[index]=course;
    }
    public Course[] getCourses(){
        return courses;
    }
}

在EditCourseActivity中,编辑后,将更新的课程信息存储在CourseHolder的副本中

在MainActivity.onResume()中,调用listView.setAdapter(null),然后使用CourseHolder中的数据刷新它

答案 1 :(得分:0)

作为一般答案:从其表示中分离数据。您可以通过多种方式实现这一目标:

  • 数组列表的单例包装器
  • 要特定于Android:将数组包装在ContentProvider中
  • 使用Android SDK SQL数据库支持