我有一个带有三个活动的android应用程序,流程就像这样
A-> B-> C
问题是当我从活动C转到活动B.(B < - C)
详情和背景:
我有一个专辑的arraylist,其中包含一系列照片,其中包含一系列标签。 Activity A反序列化ArrayList以查看ArrayList中是否有任何新的更改。活动A处理添加新专辑,添加专辑后我序列化ArrayList,这是有效的。我选择了一张将我带到活动B的专辑(Arraylist成功传递给活动B)。在此活动(B)中,我可以添加图像。添加图像后,我序列化了Arraylist。这有效,我可以在活动A和B之间切换,照片会被保存。当我在活动B上选择后退按钮时,它会将我带到活动A,我这样做是通过执行以下操作
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
case R.id.action_add:
.
.
.
case:
etc,
.
.
}
}
(每个活动的左上角都有安卓后退按钮)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
这样做我学会了控制流进入活动A内部的Oncreate(),好像正在创建一个新实例一样?
我们现在已进入活动B
现在,如果我选择一个图像,它会将我带到活动C.在此活动(C)中,我可以添加多个标签。我序列化了ArrayList,然后我单击后退按钮将我带到Activity B,现在我在活动BI中点击相同的照片,然后将我带到活动C,但标签不显示与图像相关联,如果我很难他们出现的代码标签。但似乎arraylist永远不会更新。我不知道控制流在哪里返回活动B内部,如果我选择使用OnCreate()获取路径创建一个新实例使我的列表对象为null
intent = getIntent();
arrayList = (ArrayList)intent.getSerializableExtra("key1");
变为null,因为创建了一个新的Activity B实例,被C调用,这个ArrayList永远不会被传递给Activity B,因为只有Activity A以这种方式调用B?
我希望活动C能够正确保存Arraylist,当我点击后退按钮将我带到活动B,然后重新点击同一张照片我希望看到与图像有关的标签
活动A:
通过Intent调用活动B
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("key1", list); //list is an ArrayList
我将列表传递给活动B
活动B:
控制流然后进入Oncreate();
此方法OnCreate()包含
intent = getIntent();
arrayList = (ArrayList)intent.getSerializableExtra("key1");
我成功地收到了arraylist。 现在我想将列表传递给Activity C
Intent intent = new Intent(SecondActivity.this, ThirdActivity.class);
intent.putExtra(“key2”,list);
活动C
{
控制流然后进入Oncreate();
此方法OnCreate()包含
intent = getIntent();
arrayList = (ArrayList)intent.getSerializableExtra("key2");
现在当我按下后退按钮时,我这样做了
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);//control goes to onCreate()??
case R.id.action_add:
.
.
.
case:
etc,
.
.
}
}
现在让我们带走NavUtils.NavigateUpFromSameTask(this);
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case android.R.id.home:
//NavUtils.navigateUpFromSameTask(this);
finish();
case R.id.action_add:
.
.
.
case:
etc,
.
.
}
}
这样做我回到活动B而没有输入onCreate(),但如果我点击照片,标签就不会显示出来。
}
仍在活动中