[英]Super OnActivityResult not calling Fragment OnActivityResult
我正在为我的应用程序使用Xamarin Studio。 我这里有一个与此类似的问题。 我正在以启动相机的意图调用StartActivityForResult
。 相机拍照并返回到应用程序,然后调用主活动的OnActivityResult
。 我的问题是,尽管调用了base.OnActivityResult
,但我的片段的OnActivityResult
从未被命中。
我在这里浏览了SO上的解决方案,这些解决方案通常是:
1.在片段内调用base.StartActivityForResult
而不是StartActivityForResult
2.呼叫base.OnActivityResult
在主要活动的OnActivityResult
对未处理请求代码转发
3.确保launchMode
中的launchMode
未设置为single
码:
片段-
void AddImage(object sender, EventArgs e){
//Preparing intent here...
StartActivityForResult (intent, 0);
}
//no override keyword because I'm given a compiler error stating
//that there is no OnActivityResult to override
protected void OnActivityResult(int requestCode, Result resultCode, Intent data){
//I call resultCode.GetHashCode here because I'm using SupportFragment
base.OnActivityResult (requestCode, resultCode.GetHashCode(), data);
if (resultCode == Result.Canceled)
return;
//process image...
}
主要活动 -
protected override void OnActivityResult (int requestCode, Result resultCode, Intent data)
{
base.OnActivityResult (requestCode, resultCode, data);
//processing data from other intents at the main activity level
}
在SupportFragment中,您应该使用
public override void OnActivityResult(int requestCode, int resultCode, Intent data){
base.OnActivityResult (requestCode, resultCode, data);
代替
public override void OnActivityResult(int requestCode, Result resultCode, Intent data) {
注意arg resultCode的类型,以int形式覆盖
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.