Es scheint, Sie haben das Konzept nicht richtig verstanden! Dies könnte Ihnen helfen, onActivityResult zu verstehen.
von startActivityForResult(Intent intent, int requestCode)
verwenden, können Sie eine andere Aktivität beginnen und dann erhalten ein Ergebnis aus dieser Tätigkeit in der onActivityResult()
method.So onActivityResult()
ist, von wo Sie die andere Aktivität starten.
onActivityResult(int requestCode, int resultCode, Intent data)
Überprüfen Sie die Parameter hier. Anforderungscode ist dort zu filtern, von wo Sie das Ergebnis erhalten haben. So können Sie verschiedene Daten mit ihren requestCodes identifizieren!
Beispiel
public class MainActivity extends Activity {
// Use a unique request code for each use case
private static final int REQUEST_CODE_EXAMPLE = 0x9988;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create an Intent to start AnotherActivity
final Intent intent = new Intent(this, AnotherActivity.class);
// Start AnotherActivity with the request code
startActivityForResult(intent, REQUEST_CODE_EXAMPLE);
}
//-------- When a result is returned from another Activity onActivityResult is called.--------- //
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// First we need to check if the requestCode matches the one we used.
if(requestCode == REQUEST_CODE_EXAMPLE) {
// The resultCode is set by the AnotherActivity
// By convention RESULT_OK means that what ever
// AnotherActivity did was successful
if(resultCode == Activity.RESULT_OK) {
// Get the result from the returned Intent
final String result = data.getStringExtra(AnotherActivity.EXTRA_DATA);
// Use the data - in this case, display it in a Toast.
Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show();
} else {
// AnotherActivity was not successful. No data to retrieve.
}
}
}
}
AnotherActivity
< - Dies ist die diejenige, die wir Daten zu senden verwenden, um MainActivity
public class AnotherActivity extends Activity {
// Constant used to identify data sent between Activities.
public static final String EXTRA_DATA = "EXTRA_DATA";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
final View button = findViewById(R.id.button);
// When this button is clicked we want to return a result
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Create a new Intent as container for the result
final Intent data = new Intent();
// Add the required data to be returned to the MainActivity
data.putExtra(EXTRA_DATA, "Some interesting data!");
// Set the resultCode to Activity.RESULT_OK to
// indicate a success and attach the Intent
// which contains our result data
setResult(Activity.RESULT_OK, data);
// With finish() we close the AnotherActivity to
// return to MainActivity
finish();
}
});
}
@Override
public void onBackPressed() {
// When the user hits the back button set the resultCode
// to Activity.RESULT_CANCELED to indicate a failure
setResult(Activity.RESULT_CANCELED);
super.onBackPressed();
}
}
Hinweis: Jetzt in MainActivity
überprüfen Sie startActivityForResult
dort geben Sie einen REQUEST_CODE
. Nehmen wir an, Sie möchten drei verschiedene Aktivitäten aufrufen, um Ergebnisse zu erhalten. Es gibt also drei startActivityForResult
Anrufe mit drei verschiedenen REQUEST_CODE. REQUEST_CODE ist nichts anderes als ein eindeutiger Schlüssel, den Sie in Ihrer Aktivität angeben, um Ihre startActivityForResult
-Aufrufe eindeutig zu identifizieren.
Sobald Sie Daten von diesen Aktivitäten erhalten können Sie überprüfen, was ist der REQUEST_CODE, dann wissen Sie, ah ha dieses Ergebnis ist von dieser Aktivität.
Es ist so, als würdest du E-Mails an deine Geliebten mit einem farbenfrohen Cover verschicken und sie bitten, in den gleichen Umschlägen zu antworten. Wenn du dann einen Brief von ihnen zurückbekommst, weißt du, wer das für dich geschickt hat. awww;)
einfach überprüfen Sie den Wert requestCode innerhalb des onActivityResult Methode und Sie sind gut zu gehen. Der Anforderungscode kann für die beiden Aktivitäten zum Zeitpunkt des Aufrufs unter Verwendung der Absicht –
für die Aktivität, die 'setResult() aufruft, unterschiedlich festgelegt werden. finish(); 'ist es egal, wie der Name des Intent-Parameters lautet –