我刚开始在Xamarin中开发,在两个活动之间传递一个int[]同时是“forward”和“backward”时遇到了问题。因此,当活动1启动活动2时,它应该将int[]传递给活动2,当对活动2调用“onbackpressed”时,int[]应该传递回活动1。
我有四个地方的密码。
活动一:内部oncreate()

sharedIntent = new Intent(this,typeof(MyListViewActivity));
sharedIntent.PutExtra("SELECTED_LISTVIEW_ITEMS", selectedItems);
btnLaunchListViewActivity.Click += delegate { StartActivity(sharedIntent); };

活动二:内部oncreate()
var previouslySelectedItems = Intent.GetIntArrayExtra("SELECTED_LISTVIEW_ITEMS");

if(previouslySelectedItems  != null)
{
    foreach(int position in previouslySelectedItems )
    ListView.SetItemChecked(position, true);
}

活动二:内部onbackpressed()
Intent.PutExtra("SELECTED_LISTVIEW_ITEMS", checkedItemPositions);

活动一:内部onrestart()
selectedItems = sharedIntent.GetIntArrayExtra("SELECTED_LISTVIEW_ITEMS");

现在看来,我的int[]正在“前进”到活动2,但从未“返回”到活动1,任何帮助都将非常感谢!活动2中的intent.getIntarrayExtra是否调用了与活动1中我的共享内容相同的意图?

最佳答案

您错过了onbackpressed()中的startActivity()方法。或者您更喜欢在activity1中使用startActivityForresult()方法,并在onActivityResult()中处理结果。

10-06 01:34