我试图将多个整型变量值从第二个活动返回到主活动,在第二个活动中,我有许多通过不同函数计算的变量,我需要返回到主活动,以添加到另一个变量的总和中。
在我的主要活动中,我使用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();
}
}
}
我无法运行,因为我收到了错误
“没有给定与”“Intent.GetIntExtra(string,int)”“所需的形式参数”“defaultValue”“相对应的参数”
我决定尝试添加一个转换。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 Emulator中运行它,但似乎没有返回任何值,就我的一生而言,我不知道为什么。
请帮忙!!
请原谅我的无礼,这是我第一次尝试android应用程序,在过去的5个小时里我一直在努力解决这个问题。