更新从不活动的活动传递的对象

时间:2014-09-25 20:47:00

标签: android android-activity expandablelistview expandablelistadapter

我有一节课

public class Days implements Serializable {
    private String id;
    private List<Hours> hours;
    //getters and setters
}

课时

public class Hours implements Serializable{
    private String id;
    private String comments;
    //getters and setters
}

我还有一个带有ExpandableList的活动,该活动将天数显示为组,将小时显示为子项。 当我点击特定小时时,我会将对象时间传递给另一个活动进行编辑。

public class DaysListActivity extends ExpandableListActivity
            implements OnChildClickListener
{
    //Other methods
    @Override
    public boolean onChildClick(parameters...)
    {
        Intent i = new Intent(getApplicationContext(),HourActivity.class);
        i.putExtra("hourClicked",day.getHour(idHourClicked));
        startActivity(i);
    }
}

在HourActivity.class中

public class HourActivity extends Activity{
    @Override
    public void onCreate(Bundle savedInstance)
    {
        ...
        Intent i = getIntent();
        Hour hour = (Hour) i.getSerializableExtra("hourClicked");
        updateHour(hour);
        ....
    }

    public void updateHour(Hour hour)
    {
        hour.setComment("Hellow world");
        Toast toast = Toast.makeText(getApplicationContext(), hour.getComment(), Toast.LENGHT_SHORT);
        toast.show();
    }    

}

一切顺利,吐司给我看“Hello world”。但是当我回到DayListActivity时,我点击并更新的小时保持相同的值,它不会刷新。 Wrost,如果我再次点击同一个小时,我就好像它从未更新为“Hello world”

我已经尝试过适配器上的notifyDataSetChanged()和ExpandableListView上的invalidateViews()。 我错过了哪一步?

1 个答案:

答案 0 :(得分:2)

这是另一个对象。你已经序列化了这个对象,在另一个活动中处理了新对象并回来了。

使用startActivityForResult打开子活动,然后在返回之前序列化生成的对象。

在onActivityResult中,再次反序列化它。你已经完成了。

你在这方面拥有大量资源How do I pass data between Activities in Android application?

顺便说一下......我会做一个主要细节的事情,所以对于儿童活动我只会发送记录的ID并在我回来时重新加载数据。