C# 如何从主活动获取视图
有一个来自处理程序的类继承器,通过它我可以控制图形按钮。 要搜索此按钮,我向设计器传递一个指向激活的链接。但我想通过那里的风景。如何从活动中获取视图C# 如何从主活动获取视图,c#,android,xamarin,android-activity,view,C#,Android,Xamarin,Android Activity,View,有一个来自处理程序的类继承器,通过它我可以控制图形按钮。 要搜索此按钮,我向设计器传递一个指向激活的链接。但我想通过那里的风景。如何从活动中获取视图 public class FlActivity : AppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentVi
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));
}
}
公共类活动:AppCompatActivity
{
创建时受保护的覆盖无效(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.activity_fl);
toolbar=findviewbyd(Resource.Id.toolbar);
设置支持操作栏(工具栏);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
tabLayout=findviewbyd(Resource.Id.tabLayout);
viewPager=FindViewById(Resource.Id.viewPager);
fpAdapter=新的fpAdapter(SupportFragmentManager,null);
uiHandler=新的uiHandler(这个,MainLooper);
}
}
公共类UiHandler:Handler
{
私有活动活动{get;}
公共UiHandler(活动a,活套装入器):基本(装入器)
{
活动=a;
}
公共覆盖无效HandleMessage(消息消息消息)
{
activity.findviewbyd(Resource.Id.imageButton1).SetImageResource(msg.Data.GetInt(“Id”,Resource.Drawable.bt_off));
}
}
如果我将
private-Activity-Activity{get;}
更改为private-View-View{get;}
,那么在创建处理程序实例时如何从主活动转移视图。在创建nadler对象时,如何替换此
this.Window.DecorView.RootView;
或
或
或
或
尽管如此,由于它可能是一个布局,而不是单个视图,我建议使用ViewGroup
而不是view
(这些方法返回view
,因此如果需要,您必须将它们转换到ViewGroup
)
=================
感谢您的帮助。我需要一个视图,因为我想更改这个类中其他视图的处理程序元素,例如对话框。
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);