我在android中的一个活动中有一个recyclelerview,它有各种类型的Item对象(绑定到不同的视图)。当我点击其中一个recyclerview视图上的按钮时,它应该触发一个事件,而该事件又会打开一个新活动。这是我第一次点击它,但是,当我再次尝试输入活动时这个点击事件导致活动冻结?我得到的唯一调试输出就是这个。没有outofmemoryexception或任何有用的东西。
[Mono] [0xb96777f0] worker finishing
Thread finished: <Thread Pool> #5
[ViewRootImpl] changeCanvasOpacity: opaque=false
[ViewRootImpl] changeCanvasOpacity: opaque=false
[Mono] [0xba234a20] worker finishing
当我点击“按钮”时。这是一个附加了点击列表器的relativelayout。我将数据添加到捆绑包中调用StartActivity()。下面是我打开此活动的方法
public override void openActivity(object sender, EventArgs e)
{
RelativeLayout btn = (RelativeLayout) sender;
int pos = (int) btn.GetTag (Resource.Id.bottom_btn);
TweetPicItem picitem = (TweetPicItem) newsitems[pos];
var tweetactivity = new Intent(cont, typeof(TweetActivityImage));
tweetactivity.PutExtra("content", picitem.BodyText);
tweetactivity.PutExtra("name", picitem.TeamName);
tweetactivity.PutExtra("image_url", picitem.TweetImage);
tweetactivity.PutExtra("club", picitem.CreatedBy);
tweetactivity.PutExtra ("tint", picitem.BackgroundColour);
tweetactivity.PutExtra("isliked", picitem.ILikeThis);
tweetactivity.PutExtra("tweetid", picitem.Id);
if(picitem.Comments != null)
tweetactivity.PutExtra("comments" , JsonConvert.SerializeObject(picitem.Comments));
cont.StartActivity(tweetactivity, options.ToBundle());
}
在onBind中我每次重新连接事件处理程序之前都会分离
vh.bottombtn.SetTag(Resource.Id.bottom_btn, position);
vh.bottombtn.Click -= openActivity;
vh.bottombtn.Click += openActivity;
所以当按下按钮时,应用程序基本冻结了。由于缺少调试输出,我真的不知道这个问题会在哪里发生?首先我认为它是在onbind中附加了eventhandlers但是我每次在附加它之前明确地拆除了evenhandler吗?我也在多个设备上试过它,问题仍然存在。我知道在这里工作的信息很少,我自己难倒,我认为调试输出会以某种方式警告我,但我什么也得不回来。如果有任何想法id欣赏帮助/建议。