2016-11-02 5 views
0

Ich würde gerne fragen, ob es eine Möglichkeit gibt, Extras oder Bundle zu setzen, wenn Sie finish() Methode aufrufen.Bundles oder PutExtra bei der Ausführung beenden()

Zum Beispiel wie ein Activity Aufruf Sie können dies tun:

Intent intent = new Intent(view.getContext(), AddListing.class); 
intent.putExtra("user_id", userID); 
startActivity(intent); 

ist es möglich, sie in finish() zu benutzen?

Danke.

+0

Versuchen Sie, Extras an die vorherige Aktivität zurückzugeben? – cascal

+0

'putExtra' ist nicht verwandt mit' finish() '. 'finish()' ist eine Methode zum Entfernen der aktuellen Aktivität. –

+0

Suchen Sie nach einer Möglichkeit, das Ergebnis zurückzugeben? Wenn ja, sollten Sie nach "startActivityForResult" suchen. – Joshua

Antwort

0

Die Methode finish() ist mit Absicht als Parameter verfügbar. Wenn Sie einige Daten an die aufrufende Aktivität zurückgeben möchten, können Sie setResult(int resultCode, Intent intent) vor dem Aufruf finish() verwenden. Bei dieser Methode müssen Sie Bündel oder Extras in Absicht weitergeben. Und akzeptiere es in der onActivityResult-Methode beim Aufrufen von Aktivitäten. Nur so können Daten an die aufrufende Aktivität zurückgegeben werden. Sie können https://developer.android.com/training/basics/intents/result.html

2

diesen Link finden Sie suchen Ergebnisse zurückzugeben, wenn ein Activity zerstört wird, was Sie suchen sollten, ist: startActivityForResult.

Es gibt zwei Varianten von startActivityForResult(), die bundle als auch im Falle einer Notwendigkeit passieren lässt:

public void startActivityForResult (Intent intent, int requestCode) 
public void startActivityForResult (Intent intent, int requestCode, Bundle options) 

dieses Beispiel Siehe das Konzept besser zu verstehen:

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 
      } 
     }); 
} 
0
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); 

wo Vor allem müssen Sie zwei Klassen in der Absicht definieren, ist 1. eine die Klasse, von dem Sie die Daten senden, mit (.this) Verlängerung. Das zweite ist die Klasse, in der Sie die Daten empfangen, mit der Erweiterung (.class).

Verwandte Themen