使用后退导航按钮将数据从第二个活动发送到mainacitivty

时间:2018-02-01 07:39:59

标签: android android-activity

背景:
如果您的mainactivity具有名为points的数据流,并且您希望通过按下按钮将其发送到secondactivity。

当你进入第二个活动时,你已经将数据点从mainactivity转移到了第二个活动的数据管名称点。

在第二个活动中,您添加了更多的点,然后突然点击按钮后退导航按钮,然后返回主要活动页面。

问题:
主要的问题是当你按下按钮后退导航时,我应该如何从第二次活动中恢复新的点数。

谢谢!

Back navigation button
后退导航按钮

的信息:
*我是Android的新手。

6 个答案:

答案 0 :(得分:0)

您可以使用:

SELECT MAP_DATA.PRODUCT_ID, MAP_DATA.PRODUCT NAME
FROM (
    select PRODUCT_ID , PRODUCT_NAME
    FROM TABLE_1

    UNION 

    SELECT PRODUCT_ID , PRODUCT_NAME
    FROM TABLE_2
      ) MAP_DATA

你怎么能找回它?你可以这样做:

1)创建一个POJO类:

@Override
public void onBackPressed() {
 //write code here where you want to send data to another activity
}

2)然后在backPressed事件中你可以做这样的事情:

public class Info {
 private string someData;

    public static Info getInstance() {
        if (info == null) {
            info = new Info();
        }
        return info;
    }

public String getsomeData() {
        return someData;
    }

public String setsomeData(String someData) {
        this.someData = someData;
    }
}

3)并且要将此数据用于所需的活动,您可以这样做:

Info.getInstance.setSomeData(yourData);

答案 1 :(得分:0)

您可以使用此步骤Fisrt Activity声明startActivityForResult而不是startActiviy

    Intent askIntent = new Intent(FirstActivity.this, SecondActivity.class);

            // Start SecondActivity with the request code
            startActivityForResult(askIntent, 111);

OnActivityResult声明firstActivity

      @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // check if the request code is same as what is passed  here it is 1
    if (requestCode == 111) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            final String result = data.getStringExtra(SecondActivity.Result_DATA);

            // Use the data - in this case display it in a Toast.
            Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show();
        }
    }
}

SecondActivity OnBackpress

      Intent sendIntent = new Intent();

            // Add the required data to be returned to the FirstActivity
            sendIntent.putExtra(Result_DATA, "Anders Hejlsberg");

            // Set the resultCode to Activity.RESULT_OK to
            // indicate a success and attach the Intent
            // which contains our result data
            setResult(RESULT_OK, sendIntent);

            // With finish() we close the SecondActivity to
            // return to FirstActivity
            finish();

答案 2 :(得分:0)

您可以覆盖onBackPress()中的SecondActivity,然后使用startActivityForResult()启动它。在onBackPress()中,您将数据发送回MainActivity

答案 3 :(得分:0)

1-定义变量

public static String str;

2- onBackPressed

@Override
public void onBackPressed() {
 //your variables
}

答案 4 :(得分:0)

如果在您的情况下数据是主要要求,那么我不建议您在这里和那里传递数据。我建议您只需将MainActivity中的数据添加到SharedPreference并转到SecondActivity并再次从SharedPreference(您之前从MainActivity添加的)中检索数据,如果需要,您可以再次在SharedPreference中添加更多的点并返回到MainActivity,您可以再次从SharedPreference中检索数据。

此处数据将在SharedPreferenec的帮助下从SecondActivity更新。 通过使用SharedPreferenec,您不必担心将数据从一个Activity传递到另一个Activity,并且Application也不会承担负担。

答案 5 :(得分:0)

您可以使用此库

  

https://github.com/greenrobot/EventBus

创建一个pojo类并通过Eventbus post方法传递它