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

时间:2014-01-18 15:45:25

标签: android android-intent

我想将值从第二个活动传递到第一个。第二项活动在第一次活动后开始。我使用了onActivityResult和简单Intent。代码调用第一个活动,但toast不起作用。

第二项活动:

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

第一项活动:

@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();
            }
        }
    }

4 个答案:

答案 0 :(得分:1)

您只需要在SecondActivity中使用以下内容

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

onActivityResult

中的第一项活动中
String name = data.getStringExtra("name");

你需要

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
 startActivityForResult(intent,0);
第一个活动中的

答案 1 :(得分:1)

从FirstActivity开始,像这样启动nextActivity -

startActivityForResult(intent, code);

然后在SecondActivity中,setResult() -

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

                setResult(2,intent);  

                finish();

然后在FirstActivity中,检查onActivityResult()中的代码。您没有得到结果,因为您只通过startActivity()启动第二个活动。我希望这对你有所帮助。

答案 2 :(得分:0)

您必须在startActivityForResult(intent, requestCode)中致电startActivity(intent)而不是FirstActivity来加载它。然后,在onActivityResult()中实施FirstActivity方法,使用传递的SecondActivity in参数从Intent获取数据。

最后,在SecondActivity setResult()方法调用finish()时,{{1}}

答案 3 :(得分:-1)

你是从第二到第一。它将进入onCreate。

所以: -

@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");
    }
}