在我的活动中,我正在通过startActivityForResult从主活动中调用第二个活动。在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是只有其中一个返回结果。
例如,在主要活动中,我称第二个活动。在本活动中,我将检查手机的某些功能,例如是否带有摄像头。如果没有,我将关闭此活动。另外,在准备MediaRecorder或MediaPlayer时,如果发生问题,那么我将关闭此活动。
如果其设备带有摄像头并且录制已完全完成,那么在录制视频后,如果用户单击“完成”按钮,我会将结果(录制的视频的地址)发送回主要活动。
如何检查主要活动的结果?
答案 0 :(得分:0)
在SecondActivity
中,一个很好的结果示例可能是:
setResult(Activity.RESULT_OK, getIntent());
finish();
这样,您可以从SecondActivity
“答复”任务已成功完成,并且意图可以携带您的信息。
然后,在您的FirstActivity
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode==YOUR_REQUEST_CODE && Activity.RESULT_OK == resultCode) {
// Stuff went fine
}
}
答案 1 :(得分:0)
在主要活动中,您应该具有以下内容:
public static final int REQUEST_CODE = 1;
Button button = (Button) findViewById(R.id.your_button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// actions that will happen when the button is pressed:
Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE);
}
});
在第二个活动中,您应该传递结果,例如单击RecyclerView中列表项的位置,像这样:
ExampleClickAdapter clickAdapter = new ExampleClickAdapter(yourObjects);
clickAdapter.setOnEntryClickListener(new ExampleClickAdapter.OnEntryClickListener() {
@Override
public void onEntryClick(View view, int position) {
Intent intent = new Intent();
intent.putExtra("pos", position);
setResult(Activity.RESULT_OK, intent);
finish();
}
});
recyclerView.setAdapter(clickAdapter);
在主要活动中,您应该有一种获取结果的方法,这是您的方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
int result = data.getIntExtra("pos");
// do something with the result
} else if (resultCode == Activity.RESULT_CANCELED) {
// some stuff that will happen if there's no result
}
}
}