2012-09-03 12 views
6

Kann jemand freundlicherweise auflisten, welche Werte von mit startActivityForResult() und deren Zweck übergeben werden? Kannst du auch auf die verfügbaren setResult Parameter wie RESULT_OK erklären und was gibt es sonst noch? Freundlich helfen.Arten von RequestCode für startActivityforResult

Antwort

7

Wenn Sie eine Aktivität für Ergebnis mit requestCode >= 0 starten, wird dieser Code onActivityResult(), wenn die zweite Aktivität auf die erste Aktivität des zurückgeführt werden wird finished.You mehrere Activity für Ergebnis von Ihrem Activity beginnen. In jedem Fall erhalten Sie den Rückruf an startActivityForResult() Methode, die den RequestCode übergeben. In onActivityResult() können wir den requestCode verwenden, um herauszufinden, für welche Aktivität wir den Rückruf erhalten haben. Um die Callbacks von Activities zu unterscheiden, verwenden wir verschiedene requestCodes.

Für zB:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Intent i = new Intent(FirstActivity.this, SecondActivity.class); 
    startActivityForResult(i, 1); 
    Intent i = new Intent(FirstActivity.this, ThirdActivity.class); 
    startActivityForResult(i, 2); 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

if (requestCode == 1) { 

    if (resultCode == RESULT_OK) { 
    //Get the result from SecondActivity 
    } 

    } 
else if (requestCode == 2) { 
    if (resultCode == RESULT_OK) { 
    //Get the result from ThirdActivity 
    } 
} 
} 
2

Sie können, was Sie in requestCode setzen wollen, ist es für Sie zu wissen, welche spezifischen Informationen, die Sie erwarten nach dem Start mit dem angegebenen requestCode die Activity zurück zu kommen. Die Activity, die aufgerufen wird, sollte setResult(RESULT_OK) aufrufen, wenn es die Informationen an vorherige Activity übergeben hat, um zu überprüfen, dass dies die richtigen Daten sind, und alles ging gut.

1

Die requestCode liegt bei Ihnen. Es wird Ihnen helfen zu erkennen, welche Activity in Ihrer onActivityResult() Methode abgeschlossen ist. Auch die Ergebnisparameter liegen mehr oder weniger bei Ihnen, solange Sie nur mit Ihren eigenen Aktivitäten arbeiten. Sie können es sich als Rückgabewert der aufgerufenen Aktivität für den Aufrufer vorstellen.

2

Die requestCode in startActivityForResult() wird verwendet, um eine ID zur Anfrage zuzuweisen, so dass Anfrage mit diesem Code in onActivityResult() identifiziert werden kann. Wie, wenn jemand Codes geschrieben hat zwei Aktivitäten in einer Aktivität B und C zu starten, indem Sie folgenden Code

startActivityForResult(new Intent(A.this, B.class), 1); 
startActivityForResult(new Intent(A.this, C.class), 2); 

jetzt in onActivityResult() können Sie erkennen, welches Activity Ergebnis zurückgegeben hat.

Die setResult() Methode wird verwendet, um eine Intent in Ergebnis und eine resultCode zu setzen. Durch resultCode sagen wir onActivityResult(), dass das Ergebnis in Ordnung oder abgebrochen ist. in der Intent wir setzen in Ergebnis, kann verwendet werden, um einige Daten zu übergeben, durch intent.putExtra() Methoden.

Verwandte Themen