Android App - Xamarin - C# - 如何将多个整数变量值返回主活动?

时间:2018-04-10 20:03:38

标签: c# android xamarin xamarin.android

我试图将多个整数变量值从第二个活动返回到主活动。在第二个活动中,我有许多变量,这些变量是通过不同的函数计算的,我需要返回到要添加到的主要活动上另一个变量的总和。

在我的主要活动中,我使用StartActivityForResult

开始了第二项活动
FindViewById<Button>(Resource.Id.btnAddItems).Click += delegate
        {
            var getMoreItems = new Intent (this, typeof(Activity2));
            StartActivityForResult(getMoreItems,0);
        };  

在第二个活动中,我试图使用PutExtra和Intent返回值,有7个整数变量和一个我想要返回的字符串。

        FindViewById<Button>(Resource.Id.btnReturnItems).Click += delegate
        {
            Intent returnItems = new Intent(this, typeof(MainActivity));
            string addOrSub = "add";
            returnItems.PutExtra("putAddOrSub", addOrSub);
            returnItems.PutExtra("putVar1", int1);
            returnItems.PutExtra("putVar2", int2);
            returnItems.PutExtra("putVar3", int3);
            returnItems.PutExtra("putVar4", int4);
            returnItems.PutExtra("putVar5", int5);
            returnItems.PutExtra("putVar6", int6);
            returnItems.PutExtra("putVar7", int7);
            SetResult(Result.Ok, returnItems);
            Finish();
        };

我不完全确定,但我认为我的问题在于我的OnActivityResult覆盖了我的主要活动。首先我试过

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            if (resultCode == Result.Ok)
            {
                string addOrSub = data.GetStringExtra("putAddOrSub");
                if (addOrSub == "add")
                {
                    int tmpInt1 = data.GetIntExtra("putVar1");
                    int tmpInt2 = data.GetIntExtra("putVar2");
                    int tmpInt3 = data.GetIntExtra("putVar3");
                    int tmpInt4 = data.GetIntExtra("putVar4");
                    int tmpInt5 = data.GetIntExtra("putVar5");
                    int tmpInt6 = data.GetIntExtra("putVar6");
                    int tmpInt7 = data.GetIntExtra("putVar7");
                    updInt1 += tmpInt1;
                    updInt2 += tmpInt2;
                    updInt3 += tmpInt3;
                    updInt4 += tmpInt4;
                    updInt5 += tmpInt5;
                    updInt6 += tmpInt6;
                    updInt7 += tmpInt7;
                    anotherFunction();

                }
            }
        }

我无法运行,因为我收到了错误

&#34;没有任何参数符合所需的形式参数&#39; defaultValue&#39; &#39; Intent.GetIntExtra(string,int)&#39;&#34;

我决定尝试添加Convert.ToInt32并更改为GetStringExtra命令,因为我认为它出于某种原因将数据作为字符串返回。

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
            if (resultCode == Result.Ok)
            {
                string addOrSub = data.GetStringExtra("putAddOrSub");
                if (addOrSub == "add")
                {
                    int tmpInt1 = Convert.ToInt32(data.GetStringExtra("putVar1"));
                    int tmpInt2 = Convert.ToInt32(data.GetStringExtra("putVar2"));
                    int tmpInt3 = Convert.ToInt32(data.GetStringExtra("putVar3"));
                    int tmpInt4 = Convert.ToInt32(data.GetStringExtra("putVar4"));
                    int tmpInt5 = Convert.ToInt32(data.GetStringExtra("putVar5"));
                    int tmpInt6 = Convert.ToInt32(data.GetStringExtra("putVar6"));
                    int tmpInt7 = Convert.ToInt32(data.GetStringExtra("putVar7"));
                    updInt1 += tmpInt1;
                    updInt2 += tmpInt2;
                    updInt3 += tmpInt3;
                    updInt4 += tmpInt4;
                    updInt5 += tmpInt5;
                    updInt6 += tmpInt6;
                    updInt7 += tmpInt7;
                    anotherFunction();

                }
            }
        }

现在我可以在Android模拟器中运行它,但似乎没有返回任何值,对于我的生活,我无法弄清楚原因。

请帮忙!! 请原谅我,这是我第一次尝试Android应用程序而且我在过去的5个小时内一直在努力解决这个问题。

1 个答案:

答案 0 :(得分:1)

  

没有任何论据符合所需的形式参数&#39; defaultValue&#39; &#39; Intent.GetIntExtra(string,int)&#39;

GetIntExtra需要两个参数:

  

name String:所需项目的名称。

     

defaultValue int:如果没有以给定名称存储所需类型的值,则返回的值。

示例:如果putVar1不存在,默认情况下返回的值是什么:

int tmpInt1 = data.GetIntExtra("putVar1", 0);

文档:getIntExtra