在活动中设置自定义结果代码

时间:2018-01-31 10:29:01

标签: xamarin xamarin.android

通常使用Android,您可以在设置活动结果时设置整数结果代码here:

void setResult(int resultCode)

相反,Xamarin需要一个定义为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)

1 个答案:

答案 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);
}