如何从主 Activity 获取视图
Posted
技术标签:
【中文标题】如何从主 Activity 获取视图【英文标题】:How to get view from main Activity 【发布时间】:2020-05-11 00:25:03 【问题描述】:处理程序有一个类继承器,我通过它控制图形按钮。 为了搜索这个按钮,我在设计器中传递了一个激活链接。但我想通过那里的观点。如何从活动中获取视图?
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
?
【问题讨论】:
【参考方案1】:有很多方法可以做到这一点:
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的回答
【讨论】:
感谢它的帮助。我需要一个视图,因为我想改变这个类中其他视图的处理程序元素,例如,一个对话框。以上是关于如何从主 Activity 获取视图的主要内容,如果未能解决你的问题,请参考以下文章
区分从主屏幕启动的 Activity 或从 App 启动的另一个 Activity