如何从主要活动中获取视图

问题描述 投票:0回答:1

[从处理程序中有一个类继承者,我可以通过它控制图形按钮。为了搜索该按钮,我向设计者传递了一个指向激活的链接。但我想在那里传递观点。如何从活动中获取视图?

public class FlActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.activity_fl);

        toolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
        SetSupportActionBar(toolbar);
        SupportActionBar.SetDisplayHomeAsUpEnabled(true);

        tabLayout = FindViewById<TabLayout>(Resource.Id.tabLayout);
        viewPager = FindViewById<ViewPager>(Resource.Id.viewPager);
        fpAdapter = new FpAdapter(SupportFragmentManager, null);

        uiHandler = new UiHandler(this, MainLooper);

    }
}
public class UiHandler : Handler
{
    private Activity activity { get; }
    public UiHandler(Activity a, Looper loader) : base(loader) 
    {
        activity = a;
    }
    public override void HandleMessage(Message msg)
    {
         activity.FindViewById<ImageButton>(Resource.Id.imageButton1).SetImageResource(msg.Data.GetInt("ID", Resource.Drawable.bt_off));
    }
}

如果将private Activity activity { get; }更改为private View view { get; },那么在创建处理程序实例时如何从主要活动转移视图。创建nadler对象时用什么替换this

c# android xamarin android-activity view
1个回答
0
投票

有很多方法可以做到这一点:

this.Window.DecorView.RootView;

this.Window.DecorView.FindViewById(Android.Resource.Id.Content);

this.FindViewById(Android.Resource.Id.Content);

this.FindViewById(Android.Resource.Id.Content).RootView;

((ViewGroup) this.FindViewById(Android.Resource.Id.Content)).GetChildAt(0);

尽管,由于它可能是布局,而不是单个视图,所以我建议使用ViewGroup而不是View(这些方法返回View,因此如果需要,您必须将它们转换为ViewGroup

=================

贷给this答案

© www.soinside.com 2019 - 2024. All rights reserved.