执行finish()时的Bundles或PutExtra



我想问一下,当您调用finish()方法时,是否有一种方法可以放置ExtrasBundle

例如,就像调用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(扩展名.

最新更新