简体   繁体   English

导航回到先前的活动,一起携带数据

[英]Navigating back to previous activity carrying data together

I have a MainActivity that has a list storing my objects: 我有一个MainActivity,其中有一个存储我的对象的列表:

private List<House> houses;

When the user clicks an ADD button, it calls another activity: 用户单击添加按钮时,它将调用另一个活动:

addButton.setOnClickListener(new Button.OnClickListener()
{
    public void onClick(View v)
    {
        Intent intent = new Intent(MainActivity.this, HouseDetails.class);
        startActivity(intent);
    }
};

This new activity provides a screen where the user fills the data for the new object. 此新活动提供了一个屏幕,用户可以在其中填写新对象的数据。 Here he has to options: cancel (go back and nothing is created) or accept (go back with the newly created object). 在这里,他必须选择:取消(返回并不创建任何内容)或接受(返回新创建的对象)。

How do I go back to the MainActivity with the newly created object? 如何使用新创建的对象返回MainActivity? Should I start MainActicity again or is there any way to go back to the original main activity that was running before and bring together the new data? 我应该重新启动MainActicity还是有什么方法可以返回到之前运行的原始主活动并将新数据汇总在一起?

//Global variable
private string request_code = 1000;

and Start new activity by calling in MainActivity 并通过调用MainActivity启动新活动

Intent intent = new Intent(MainActivity.this, HouseDetails.class); 
startActivityForResult(intent , request_code );

and override method onActivityResult 并重写onActivityResult方法

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == request_code){
            if(resultCode == RESULT_OK){
                //put  your stuff here
            }else if(resultCode == RESULT_CANCEL){
                //put  your stuff here
            }
        }
    }

in HouseDetails activity override method finish of activity 在HouseDetails活动中覆盖活动的方法完成

    @Override
    public void finish() {
        Intent data = new Intent();
        Bundle extra = new Bundle();
        //put your data in bundle
        data.putExtras(extra);
        if(cancel){
             setResult(RESULT_CANCEL , data);
        }else{
               setResult(RESULT_OK,data);
         }
        super.finish();
    }

您的列表应该是静态的,并且您可以从第二个活动中添加一个新对象,例如

MainActivity.houses.add(House house);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM