私のアクティビティでは、メイン アクティビティから 2 番目のアクティビティを呼び出していますstartActivityForResult
。2 番目のアクティビティには、このアクティビティを終了するメソッドがいくつかあります (結果なしで終了する場合もあります)。ただし、結果を返すのはそのうちの 1 つだけです。
たとえば、メインのアクティビティから 2 番目のアクティビティを呼び出します。このアクティビティでは、カメラがあるかどうかなど、携帯電話のいくつかの機能をチェックしています。カメラがない場合は、このアクティビティを閉じます。また、準備中MediaRecorder
またはMediaPlayer
問題が発生した場合にも、このアクティビティを閉じます。
デバイスにカメラがあり、録画が完全に完了している場合、ビデオを録画した後、ユーザーが完了ボタンをクリックすると、結果 (録画されたビデオのアドレス) がメイン アクティビティに返されます。
メインアクティビティの結果を確認するにはどうすればよいですか?
ベストアンサー1
からFirstActivity
、メソッドSecondActivity
を使用してを呼び出しますstartActivityForResult()
。
例えば:
int LAUNCH_SECOND_ACTIVITY = 1
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, LAUNCH_SECOND_ACTIVITY);
でSecondActivity
、戻りたいデータを設定しますFirstActivity
。戻りたくない場合は、何も設定しないでください。
たとえば、SecondActivity
データを送り返す場合は次のようにします。
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
データを返したくない場合は:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
次にFirstActivity
、クラス内でメソッドの次のコードを記述しますonActivityResult()
。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == LAUNCH_SECOND_ACTIVITY) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
// Write your code if there's no result
}
}
} //onActivityResult
Kotlinで2つのアクティビティ間でのデータの受け渡しをより適切に実装するには、「アクティビティ間でデータを渡すためのより良い方法'。