从非活动类添加视图时出现异常

时间:2017-04-24 13:27:16

标签: c# android xamarin.android

我正在尝试在点击某些内容时操纵布局,为此我必须使用Handler类。问题是如果没有收到此消息,我就无法做到:

Screen capture of the error message

这是我的代码。 (我正在使用C#/ Xamarin.android)

public class ClickListener : VectorElementEventListener
{
    MapView mapView;
    MainActivity activity;

    public ClickListener(MainActivity activity)
    {
        this.mapView = activity.mapView;
        this.activity = activity;
    }

    public override bool OnVectorElementClicked(VectorElementClickInfo clickInfo)
    {
        var zoomIn = activity.FindViewById<Button>(Resource.Id.zoomIn);
        zoomIn.Text = "+"; // The exception originates from this line

        return true;
    }
}

如果它们被放置在MainActivity类中,那么这两行就可以正常工作。那是为什么?

我被困在这个问题上太久了。请帮忙!

1 个答案:

答案 0 :(得分:1)

我明白了。这是解决方案: 如果我们想在UI上进行更改,我们应该使用Action并在主活动UI线程上运行它。像这样:

public class ClickListener : VectorElementEventListener
{
    MapView mapView;
    MainActivity activity;

    public ClickListener(MainActivity activity)
    {
        this.mapView = activity.mapView;
        this.activity = activity;
    }

    public override bool OnVectorElementClicked(VectorElementClickInfo clickInfo)
    {
        Action manipUI = () => {
            var zoomIn = activity.FindViewById<Button>(Resource.Id.zoomIn);
            zoomIn.Text = "+";
        }
        activity.RunOnUIThread(manipUI);
        return true;
    }
}