Java 无法将数据从活动C通过活动B移动到活动A

Java 无法将数据从活动C通过活动B移动到活动A,java,android-studio,android-activity,android-lifecycle,Java,Android Studio,Android Activity,Android Lifecycle,我试图移动一些数据问题是,当我直接从活动A跳到活动C(以下称为A和C)时,做一些更改并按下一个按钮,当我从C返回到A时,数据不会丢失。它完美地更新了我的不同文本框、搜索栏等 但是当我通过B从A转到C,然后再通过B回到A时,我没有得到我的数据。A不会随C中所做的更改而更新 以下是我尝试过的内容(我尝试只显示代码,我发现这与此相关): 活动A(主): @Override protected void onCreate(Bundle savedInstanceState) { super.

我试图移动一些数据问题是,当我直接从活动A跳到活动C(以下称为A和C)时,做一些更改并按下一个按钮,当我从C返回到A时,数据不会丢失。它完美地更新了我的不同文本框、搜索栏等

但是当我通过B从A转到C,然后再通过B回到A时,我没有得到我的数据。A不会随C中所做的更改而更新

以下是我尝试过的内容(我尝试只显示代码,我发现这与此相关):

活动A(主):

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(savedInstanceState!=null)
        games= (ArrayList<Game>) savedInstanceState.getSerializable("SAVED");
    else
        loadArrayFile();

...
A lot of unrelated code ..
...
// Here I want to go from A to B
        listMyGames.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
            Game game = (Game) arg0.getItemAtPosition(position);
            Intent intent = new Intent(MainActivity.this, SpecialsActivity.class);

            intent.putExtra("game", game);
            intent.putExtra("pos", position);
            intent.putExtra("image", game.getImage());

            startActivity(intent); <<<<<<<< HERE IS THE ERROR
        }
    });
这就是我认为与A相关的内容。继续进行活动B

// Inside the onCreate-method:
...
    btnGoToChangesActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    Intent intent = new Intent(SpecialsActivity.this, ChangesActivity.class);

        intent.putExtra("game", game);
        intent.putExtra("pos", position);
        intent.putExtra("image", game.getImage());
        startActivityForResult(intent, 1);
    }
});
但我在B中也有一个onActivityResult方法,它是这样的:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            Game updatedGameSpecials = (Game)data.getSerializableExtra("updatedGameSpecials");
            int position = data.getIntExtra("pos", -1);
            data.putExtra("updatedGameSpecials", updatedGameSpecials);
            data.putExtra("pos", position);
            setResult(RESULT_OK, data);
            finish();
        }
    }
}
最后是我的活动C。在这里,我做了一些改变——用搜索引擎给一个主题打分,填写一个文本框,等等

我有一个按钮,当我按下它时,它应该转到B(在C中进行了更改),从那里直接转到a。原因是,当我从B转到C时,没有从C直接跳到a和“finish()”B,是因为我不能完成()B,因为我在C中有一个“cancel”-按钮,当按下它时,我从C转到B:

btnSaveChanges.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    game.setGameChanges(etGameChanges.getText().toString());

    Intent data = new Intent();

    position = getIntent().getIntExtra("pos", -1);
    data.putExtra("pos", position);
    data.putExtra("updatedGameSpecials", game);
    setResult(RESULT_OK, data);
    finish();
}
});

请注意,当在活动a中使用onItemLongClick时,它会以某种方式工作。。。但这不是目的。目的是通过B到C,通过B从C到A。。。 因此,当我使用此函数从A到C再返回时,数据(/changes in C)不会丢失,而是在A中更新:

listMyList.setOnItemLongClickListener(新的AdapterView.OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView父项、视图、整型位置、长id){
Game Game=(游戏)parent.getItemAtPosition(位置);
意向意向=新意向(MainActivity.this、ChangesActivity.class);
意图。putExtra(“游戏”,游戏);
意图。额外(“位置”,位置);
intent.putExtra(“image”,game.getImage());
startActivityForResult(意向,1);
返回true;
}
});


我错过了什么或做错了什么?我看不出有任何错误,我认为我把额外的东西放在了正确的位置,但我显然遗漏了一些东西。

在尝试了几个小时不同的东西后,我发现,所有这些都回到了使用中

startActivity(intent)
反而

startActivityForResult(intent, 1)
内部活动A

startActivity(intent)
startActivityForResult(intent, 1)