В моем приложении Xamarin.Android (Monodroid) у меня есть одно действие, которое отображает несколько фрагментов из меню в действии. Я хотел бы назначить определенные методы в своей деятельности как обработчики событий для определенных действий в фрагментах в следующем шаблоне.Назначение обработчика события Activity из фрагмента создает циклическую ссылку?
public class MainActivity : FragmentActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.mainFrame,new Accountactivity()).Commit();
SupportFragmentManager.ExecutePendingTransactions();
}
void MenuClicked(object sender, EventArgs e)
{
}
}
public class AccountFragment : Android.Support.V4.App.Fragment
{
public override void OnResume()
{
base.OnResume();
accountMenu.Click += ((MainActivity)Activity).MenuAccountClicked;
}
}
Будет ли эта модель создать циклическую ссылку на моей деятельности и остановить фрагмент, собираемой сборщиком мусора?
Привет, @ jimi312 Я переместлю это в OnAttach и OnDetach. Я делаю это в основном для настройки навигации. Я хочу изменить фрагменты в mainActivity из дочернего фрагмента. Это правильный метод для этого? И мой первоначальный вопрос заключался в том, чтобы создать циклическую ссылку в C#? Ответьте также на это ... – Sreeraj
Пока вы удаляете обработчик событий в onDetach, не должно быть проблем с циклическими ссылками. Я использовал аналогичные шаблоны в прошлом для изменения фрагментов (используя Java, а не C#) без проблем. – jimi312
Спасибо @ jimi312. В Java мы можем безопасно снабжать адаптер ListActivity с помощью ArrayAdapter. Но в C# (когда вы делаете это с monodroid), который создает циклическую ссылку. Вместо этого мы должны реализовать BaseAdapter. Я хотел бы знать, если что-то подобное происходит, когда я подписываюсь на обработчики событий в вышеупомянутом формате, поскольку я пытаюсь вызвать метод в базовом классе фрагмента, вызывающего циклическую ссылку. –
Sreeraj