Как получить вид из основной деятельности - PullRequest
0 голосов
/ 24 января 2020

Существует наследник класса от обработчика, через который я управляю кнопкой graphi c. Чтобы найти эту кнопку, я передаю в конструкторе ссылку на активацию. Но я хочу передать вид там. Как я могу получить представление из действия?

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; }, как я могу перенести представление из основного действия при создании экземпляра обработчика. Чем заменить this при создании объекта nadler?

1 Ответ

1 голос
/ 25 января 2020

Есть несколько способов сделать это:

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 если хотите)

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

Кредит этот ответ

...