我想将值从第二个活动传递到第一个。第二项活动在第一次活动后开始。我使用了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();
}
}
}
答案 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");
}
}