如何在 Android 上管理 startActivityForResult?
Posted
技术标签:
【中文标题】如何在 Android 上管理 startActivityForResult?【英文标题】:How do i manage startActivityForResult on Android? 【发布时间】:2019-06-22 21:38:17 【问题描述】:在我的活动中,我通过 startActivityForResult 从主要活动中调用第二个活动。在我的第二个活动中,有一些方法可以完成此活动(可能没有结果),但是,其中只有一个返回结果。
例如,从主要活动中,我调用了第二个活动。在这个活动中,我正在检查手机的一些功能,例如它是否有摄像头。如果没有,那么我将关闭此活动。此外,在准备 MediaRecorder 或 MediaPlayer 的过程中,如果出现问题,我将关闭此活动。
如果它的设备有摄像头并且录制完成,那么在录制视频后,如果用户点击完成按钮,我会将结果(录制视频的地址)发送回主活动。
如何检查主要活动的结果?
【问题讨论】:
看这个:developer.android.com/training/basics/intents/result 【参考方案1】:SecondActivity
中的一个良好结果示例可能是:
setResult(Activity.RESULT_OK, getIntent());
finish();
这样你就可以从SecondActivity
“回复”任务成功了,intent可以携带你的信息。
然后,在你的FirstActivity
protected void onActivityResult(int requestCode, int resultCode, Intent intent)
if (requestCode==YOUR_REQUEST_CODE && Activity.RESULT_OK == resultCode)
// Stuff went fine
【讨论】:
【参考方案2】:在主要活动中你应该有这个:
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
【讨论】:
以上是关于如何在 Android 上管理 startActivityForResult?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 上管理 startActivityForResult?
如何删除在 Android 上启用了活动设备管理员的应用程序?
如何在 android 上使用 google maps api v2 很好地管理标记