通常使用Android,您可以在设置活动结果时设置整数结果代码here:
void setResult(int resultCode)
Android.App.Result
的枚举。
这个枚举有以下值:
Ok,
Canceled,
FirstUser
问题
您无法在Xamarin Android中设置自定义结果代码。 FirstUser应该为用户定义第一个安全的自定义结果。即,任何大于FirstUser值的整数都可以按照here in the Android docs.
的规定使用我被迫将结果代码设置为此枚举类型。有没有解决的办法? OnActivityResult
方法也使用此枚举。
protected override void OnActivityResult(int requestCode, Android.App.Result resultCode, Intent data)
答案 0 :(得分:0)
我被迫将结果代码设置为此枚举类型。有没有解决的办法?
正如您所说,我们无法自定义结果代码。如果您需要确定哪个Activity
SetResult
方法触发了OnActivityResult()
中的MainActivity
方法,则可以采用以下解决方法:
在MainActivity
中,打开ResultActivity1
:
Intent intent = new Intent(this, typeof(ResultActivity1));
StartActivityForResult(intent, 1);
在ResultActivity1
中,设置结果:
Intent intent = new Intent();
intent.PutExtra("name", "ResultActivity1");
SetResult(Result.Ok, intent);
Finish();
在MainActivity
OnActivityResult
方法中:
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
if(resultCode == Result.Ok)
{
if(requestCode == 1)
{
var name = data.GetStringExtra("name");
if (name == "ResultActivity1")
{
Toast.MakeText(this, name, ToastLength.Short).Show();
}
}
}
base.OnActivityResult(requestCode, resultCode, data);
}