我在MainActivity中有Action。我想将它传递给另一个ViewPagerActivity:AppCompatActivty。这是:
Action<ImageView> btnAction = PickSelected;
...
private void PickSelected(ImageView img)
{
}
...
var intentVP = new Android.Content.Intent(this, typeof(ViewPagerActivity));
Bundle mb = new Bundle();
mb.PutParcelable("bundle",btnAction); // here it give me the error
intentVP.PutExtra("MainBundle",mb);
StartActivity(intentVP);
接下来是错误:&#34; btnAction无法从System.Action转换为Android.OS.IParcelable&#34;。是否可以通过Action类型或有另一种方式?
答案 0 :(得分:1)
我无法发表评论,所以我只会回答。
从我在这里看到的,看起来你正在使用一个Action委托,并希望根据在&#34; PickSelected&#34;中选择的内容返回结果。方法
但问题是Action委托返回void,所以你不能这样做。
相反,您需要将btnAction设为Func,并将PickSelected的签名更改为Android.OS.IParcelable(或者不需要的类型,我不会为Android编写代码),并且在您传递委托的方法中,需要调用它并传递ImageView对象。
Func<ImageView, Android.OS.IParcelable> btnAction = PickSelected;
private Android.OS.IParcelable PickSelected(ImageView img)
{
//// Insert logic here
return Android.OS.IParcelable object;
}
var intentVP = new Android.Content.Intent(this, typeof(ViewPagerActivity));
Bundle mb = new Bundle();
mb.PutParcelable("bundle",btnAction.Invoke(ImageViewObject));
StartActivity(intentVP);