2017-02-25 3 views
0

Ich habe 2 Aktivitäten zu binden, und müssen die main Activity einige Daten zu dem second Activity dann die zweite Aktivität analysieren diese Daten und Antwort zurückschicken zu senden, also habe ich die folgenden 2-Codes:zwei Möglichkeiten, um Daten zwischen den Aktivitäten

Main Activity:

import static tk.zillion.mobile.SecondActivity.EXTRA_STUFF; 

    public class MainActivity extends Activity { 
    private static int PICK_CONTACT_REQUEST = 0; 
    private static final int SECOND_ACTIVITY_RESULT_CODE = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Start the SecondActivity 
    Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
    intent.putExtra(Intent.EXTRA_TEXT, "my text"); 
    startActivityForResult(intent, SECOND_ACTIVITY_RESULT_CODE); 

    finish(); 
    } 

// This method is called when the second activity finishes 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Toast.makeText(this, "I'm the Main activity", Toast.LENGTH_SHORT).show(); 
    // check that it is the SecondActivity with an OK result 
    if (requestCode == SECOND_ACTIVITY_RESULT_CODE) { 
     if (resultCode == RESULT_OK) { 

      // get String data from Intent 
      String returnString = data.getStringExtra(EXTRA_STUFF); 

      // set text view with string 
      Toast.makeText(this, "I'm the Main activity", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 

und die Second Activity ist wie folgt:

public class SecondActivity extends Activity { 

static final String EXTRA_STUFF = "tk.zillion.mobile.EXTRA_STUFF"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Intent intent = new Intent(); 
    String s = getIntent().getStringExtra(Intent.EXTRA_TEXT); 
    Toast.makeText(this, "I'm the second activity " + s , Toast.LENGTH_SHORT).show(); 

    Bundle basket =new Bundle(); 
    basket.putString(EXTRA_STUFF, s); 
    intent.putExtras(basket); 
    setResult(RESULT_OK, intent); 
    finish(); 
    } 
} 

der zweite Akt itivity wird korrekt abgefeuert und empfängt die Daten vom Hauptkanal, aber sobald die Daten zurück gesendet werden, wird der onActivityResult nicht ausgelöst !!

Wie kann ich es lösen? Dank

Antwort

1

Entfernen Sie die finish() aufrufen, dass nach startActivityForResult kommt) (zerstört werden. Sie verhindern, dass die entgegenkommende Aktivität ein Ergebnis zurückgibt, da Sie Ihre MainActivity mit finish() aus der Back-Task entfernen.

1

Dont anruf() nach startActivityForResult sonst die Instanz von MainActivity, dass der zweite gestartet wird

Verwandte Themen