Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在两个活动之间来回传递数据_C#_Android_Android Intent_Android Activity - Fatal编程技术网

C# 在两个活动之间来回传递数据

C# 在两个活动之间来回传递数据,c#,android,android-intent,android-activity,C#,Android,Android Intent,Android Activity,我刚刚开始在Xamarin开发,在两个活动之间传递int[]时遇到了麻烦,这两个int[]都是“向前”和“向后”。因此,当活动1启动活动2时,它应该将int[]传递给活动2,当对活动2调用“onBackPressed”时,int[]应该传递回活动1 我有四个地方的代码 活动一:内部onCreate() 活动二:内部onCreate() 活动二:内部onBackPressed() 活动一:内部onRestart() 现在,我的int[]似乎正在“前进”到活动二,但从未“返回”到活动一。任何帮助都将

我刚刚开始在Xamarin开发,在两个活动之间传递int[]时遇到了麻烦,这两个int[]都是“向前”和“向后”。因此,当活动1启动活动2时,它应该将int[]传递给活动2,当对活动2调用“onBackPressed”时,int[]应该传递回活动1

我有四个地方的代码

活动一:内部onCreate() 活动二:内部onCreate() 活动二:内部onBackPressed() 活动一:内部onRestart()
现在,我的int[]似乎正在“前进”到活动二,但从未“返回”到活动一。任何帮助都将不胜感激!活动2中的Intent.GetIntArrayExtra调用的意图是否与活动一中我的共享内容相同?

我认为,活动一中未收到该数据的原因是该活动未订阅该意图。 启动活动时,您可以选择通过数据传递意图。这就是你对StartActivity(sharedIntent)所做的

我不确定,但我认为onRestart()并没有达到这个目的。另外,我怀疑onRestart()是否真的被触发了

您可以做的一件事是根据您的意图实现广播接收器和过滤器:


您错过了onBackPressed()中的startActivity()方法。或者,您可能更喜欢在Activity1中使用startActivityForResult()方法,并在onActivityResult()中处理结果。

您可以使用startActivityForResult()而不是startActivity()来启动第二个活动。 这样,当用户按back键转到第一个活动时,第二个活动将关闭。在第一个活动中,您将收到对onActivityResult()的调用,以处理第二个活动的结果:

这是处理结果的回调的标头:

protected void onActivityResult(int requestCode, int resultCode, Intent data);
var previouslySelectedItems = Intent.GetIntArrayExtra("SELECTED_LISTVIEW_ITEMS");

if(previouslySelectedItems  != null) 
{
    foreach(int position in previouslySelectedItems )
    ListView.SetItemChecked(position, true);
}
Intent.PutExtra("SELECTED_LISTVIEW_ITEMS", checkedItemPositions);
selectedItems = sharedIntent.GetIntArrayExtra("SELECTED_LISTVIEW_ITEMS");
protected void onActivityResult(int requestCode, int resultCode, Intent data);