Android Activity A B C,使用意图从{C}切换到B

时间:2016-12-07 04:35:58

标签: android android-intent android-activity arraylist

我有一个带有三个活动的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(),但如果我点击照片,标签就不会显示出来。

}

仍在活动中

0 个答案:

没有答案