我想问一下,当您调用finish()
方法时,是否有一种方法可以放置Extras
或Bundle
。
例如,就像调用Activity
一样,您可以执行以下操作:
Intent intent = new Intent(view.getContext(), AddListing.class);
intent.putExtra("user_id", userID);
startActivity(intent);
是否可以在finish()
中使用它?
谢谢。
如果您希望在Activity
被销毁时返回结果,那么您应该寻找的是:startActivityForResult。
startActivityForResult()
有两种变体,在必要时也可以通过bundle
:
public void startActivityForResult (Intent intent, int requestCode)
public void startActivityForResult (Intent intent, int requestCode, Bundle options)
看这个例子可以更好地理解这个概念:
MainActivity.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1=(TextView)findViewById(R.id.textView1);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivityForResult(intent, 2);// Activity is started with requestCode 2
}
});
}
// Call Back method to get the Message from other Activity
@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 2
if(requestCode==2)
{
String message=data.getStringExtra("MESSAGE");
textView1.setText(message);
}
}
SecondActivity.java:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
editText1=(EditText)findViewById(R.id.editText1);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String message=editText1.getText().toString();
Intent intent=new Intent();
intent.putExtra("MESSAGE",message);
setResult(2,intent);
finish();//finishing activity
}
});
}
没有一个finish()
方法可以作为其参数。如果要将一些数据传递回调用"活动",可以在调用finish()
之前使用setResult(int resultCode, Intent intent)
。在这种方法中,您需要有意地传递bundle或extra。并在调用活动的onActivityResult方法中接受它。这是将数据传回调用"活动"的唯一方法。您可以参考此链接https://developer.android.com/training/basics/intents/result.html
Define the userId-->after the intent initiation ,
Example,
Intent i = new Intent(1st.this, 2nd.class);
String sDate = Dpcheckin.getText().toString();
String eDate = Dpcheckout.getText().toString();
String roomtext=RoomText.getText().toString();
i.putExtra("date1", sDate);
i.putExtra("date2", eDate);
i.putExtra("roomtext",roomtext);
startActivity(i);
其中,主要需要在Intent中定义2个类,第一个是发送数据的类,扩展名为(this(。第二个是您正在接收数据的类,具有(.class(扩展名.