我刚刚开始在Xamarin开发,并且在两个Activites之间传递int []'forward'和'backwards'时遇到了麻烦。因此,当Activity 1启动Activity 2时,它应该将int []传递给Activity 2,当在Activity 2上调用'onBackPressed'时,int []应该传递回Activity 1。
我在四个地方都有代码。
sharedIntent = new Intent(this,typeof(MyListViewActivity));
sharedIntent.PutExtra("SELECTED_LISTVIEW_ITEMS", selectedItems);
btnLaunchListViewActivity.Click += delegate { StartActivity(sharedIntent); };
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");
现在,看来我的int []正在向前进入活动二,但从未“回到”活动一,任何帮助都将不胜感激! Activity 2中的Intent.GetIntArrayExtra是否与Activity One中的sharedIntent调用相同的意图?
答案 0 :(得分:1)
你错过了onBackPressed()中的startActivity()方法。或者您可能更喜欢在Activity1中使用startActivityForResult()方法并在onActivityResult()中处理结果。
答案 1 :(得分:0)
我认为在Activity One中没有收到数据的原因是因为Activity没有订阅该Intent。 启动活动时,您可以选择传递包含数据的Intent。这就是你用StartActivity(sharedIntent)做的事情。
我不确定但是不要认为onRestart()收到了Intent。另外,我怀疑onRestart()实际上已被触发。
您可以做的一件事是实现广播接收器并按您的意图过滤:
http://developer.android.com/reference/android/content/BroadcastReceiver.html
答案 2 :(得分:0)
您可以使用startActivityForResult()而不是startActivity()来启动第二个Activity。 这样,当用户按下返回第一个活动时,第二个活动将关闭。在第一个Activity中,您将收到onActivityResult()调用以处理第二个活动的结果:
这是处理结果的回调标题:
protected void onActivityResult(int requestCode, int resultCode, Intent data);