简体   繁体   English

将价值从第二活动传递到第一活动

[英]Pass value from second activity to first activity

I want to pass value from second activity to first. 我想将价值从第二项活动传递到第一项。 The second activity starts after first activity. 第二个活动在第一个活动之后开始。 I used onActivityResult and simple Intent . 我使用了onActivityResult和简单的Intent The code calls first activity but the toast not works. 该代码调用第一个活动,但是toast无法正常工作。

SECOND ACTIVITY: 第二活动:

@Override
public void onBackPressed(){
        Intent i = new Intent(this,ae.class);       
        setResult(RESULT_OK, i);
        i.putExtra("name","name");
        startActivityForResult(i,0);
    }
}

FIRST ACTIVITY: 第一活动:

@Override
protected void onActivityResult(int requestCode ,int resultCode ,Intent data ) {
    super.onActivityResult(requestCode, resultCode, data);
    String name =getIntent().getExtras().getString("name");

    if(resultCode == RESULT_OK){
        switch(requestCode){
        case 0:
            if(resultCode == RESULT_OK){
                Toast.makeText(this, name, Toast.LENGTH_LONG).show();
            }
        }
    }

You just need the below in SecondActivity 您只需要在SecondActivity中获得以下内容

  Intent i = getIntent();     
  i.putExtra("name","name"); 
  setResult(RESULT_OK, i);
  finish();

And in first activity in onActivityResult 并在onActivityResult第一个活动中

String name = data.getStringExtra("name");

You need 你需要

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
 startActivityForResult(intent,0);

in First Activity 在第一次活动中

From FirstActivity, start nextActivity like this- 在FirstActivity中,像这样启动nextActivity-

startActivityForResult(intent, code);

then in SecondActivity, setResult()- 然后在SecondActivity中,setResult()-

                Intent intent=new Intent();  
                intent.putExtra("MESSAGE",message);  

                setResult(2,intent);  

                finish();

and then in FirstActivity, check code in onActivityResult(). 然后在FirstActivity中,检查onActivityResult()中的代码。 You were not getting result because you are starting the second activity by startActivity() only. 您没有得到结果,因为您仅通过startActivity()启动第二个活动。 I hope this will help you surely. 希望对您有所帮助。

You have to call startActivityForResult(intent, requestCode) instead of startActivity(intent) in FirstActivity to load it. 您必须在FirstActivity调用startActivityForResult(intent, requestCode)而不是startActivity(intent)来加载它。 Then you implement the onActivityResult() method in your FirstActivity to get the data from SecondActivity by using the passed Intent in parameter. 然后,您在FirstActivity实现onActivityResult()方法,以使用传递的Intent in参数从SecondActivity获取数据。

Finally, in your SecondActivity make a call to setResult() method when it's going to finish() 最后,在您的SecondActivity当它即将finish()时调用setResult()方法。

You are Going from Second To First. 您正在从第二到第一。 It will go into onCreate. 它将进入onCreate中。

So :- 所以:-

@Override
public void onBackPressed(){
        Intent i = new Intent(this,ae.class);       
        setResult(RESULT_OK, i);
        i.putExtra("name","name");
        startActivityForResult(i,0);
    }
}
FIRST ACTIVITY:
//in OnCreate
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Bundle extras = getIntent().getExtras();
    if(extras != null){
        String name =extras .getString("name");
    }
}

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

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