我试图将多个整数变量值从第二个活动返回到主活动。在第二个活动中,我有许多变量,这些变量是通过不同的函数计算的,我需要返回到要添加到的主要活动上另一个变量的总和。
在我的主要活动中,我使用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个小时内一直在努力解决这个问题。
答案 0 :(得分:1)
没有任何论据符合所需的形式参数&#39; defaultValue&#39; &#39; Intent.GetIntExtra(string,int)&#39;
GetIntExtra
需要两个参数:
name String:所需项目的名称。
defaultValue int:如果没有以给定名称存储所需类型的值,则返回的值。
示例:如果putVar1
不存在,默认情况下返回的值是什么:
int tmpInt1 = data.GetIntExtra("putVar1", 0);
文档:getIntExtra