我面临一个与startActivityForResult()相关的问题
从FirstActivity启动SecondActivity:
Intent intent = new Intent();
intent.setClass(FirstActivity.this, SecondActivity.class);
intent.putExtra("key1", "12345");
startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)
并处理结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//TODO handle here.
}
Run Code Online (Sandbox Code Playgroud)
要从SecondActivity将消息发送到FirstActivity:
在SecondActivity中:
setResult(0);
Run Code Online (Sandbox Code Playgroud)
我无法在FirstActivity中处理onActivityResult上的结果.它永远不适用于我的应用程序.
我的操作系统是:1.5
这有什么不对?
Chr*_*Orr 30
startActivityForResult
用于您想要选择一段数据,或执行您Activity
或应用程序无法执行的某种操作的情况.
例如,您想要选择联系人,因此您启动联系人应用程序,用户选择他们想要的人,然后您将收到结果.或者您想要拍照,所以您启动相机应用程序并要求它在完成后将照片发送给您.此操作与您调用的第一个活动完全分开startActivityForResult
.
将Activity
你推出之前,不会给你的结果Activity
已经完成,即finish()
已经被调用.
所以在你的情况下,你需要调用它SecondActivity
:
setResult(...);
finish();
Run Code Online (Sandbox Code Playgroud)
之前FirstActivity
会在其onActivityResult
方法中收到结果.当然,这意味着它SecondActivity
现在已经消失,并且FirstActivity
再次成为最高层.
发送结果FirstActivity
然后关闭它同时保持SecondActivity
活动状态是不可能的.在这种情况下,您应该只处理这个'结果'所处的内容SecondActivity
,或者将其发送给Service
您定义以执行您想要的任何处理.
mat*_*ngs 18
我被困在这里一段时间了.在这里添加我的问题,以确保你不会刮伤你的头.
该函数的第二个参数必须为0或更高.
startActivityForResult(intent, 0); // <- this is OK
Run Code Online (Sandbox Code Playgroud)
我将第二个参数设置为RESULT_OK,即-1,我的onActivityResult回调永远不会被调用.因此,如果你像我一样卡住,你也可以检查你的第二个参数是否正确.
startActivityForResult(intent, RESULT_OK); // <- this is wrong
Run Code Online (Sandbox Code Playgroud)
上面的行将无法调用onActivityResult.
我也被困在同样的问题上 - 但由于matangs的原因不同.显然startActivityForResult
只有在您android:launchMode
设置standard
为主要活动(在清单中)时才有效.希望它可以帮助某人.
归档时间: |
|
查看次数: |
46882 次 |
最近记录: |