2016-04-26 4 views
0

Я пытаюсь изменить текущий фрагмент на другой фрагмент, щелкнув картографию в текущем фрагменте. У меня есть этот метод в своей основной деятельности для переключения фрагментов, когда список будет нажат и она отлично работаетКак сменить фрагмент с помощью вида карты

private void ListItemClicked(int position) 
{ 
    Android.Support.V4.App.Fragment fragment = null; 
    switch (position) 
    { 
     case 0: 
      fragment = Fragment1.NewInstance(); 
      break; 
     case 1: 
      fragment = Fragment2.NewInstance(); 
      break; 
     case 2: 
      fragment = radio.NewInstance(); 
      break; 
     case 3: 
      fragment = month1.NewInstance(); 
      break; 
     case 4: 
      fragment = Fragment2.NewInstance(); 
      break; 
    } 
    SupportFragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, fragment).Commit(); 
} 

Теперь я попытался это в моем фрагменте

MyCardView.Click += delegate { 
    MainActivity activity = new MainActivity; 
    activity.ListItemClicked(2); 
}; 

Но это дает деятельность уничтожила ошибку

Просьба представить любые идеи о том, как перейти к любому фрагменту в приложении, а не только к управляемым менеджером фрагментов в MainActivity?

ответ

0

Создается новый экземпляр класса MainActivity и пытается вызвать метод ListItemClicked. Это вызывает ошибку. Вы должны захватить экземпляр Activity, в котором размещен этот фрагмент, и затем вызвать метод. Как ниже,

MyCardView.Click += delegate { 
((MainActivity)Activity).ListItemClicked(2); 
}; 

Но для этого вам нужно будет объявить метод ListItemClicked, как public так, что его можно получить доступ из других классов. SO, вам придется изменить определение на

public void ListItemClicked(int position) 
{ 
} 
+0

Из-за этого обломки изменится? –

+0

Да, он будет вызывать метод ListItemClicked, который был бы остановлен в родительском действии и заставлять фрагмент радиофайла загружаться в соответствии с вашим кодом. – Sreeraj

Смежные вопросы