2016-04-26 95 views
0

我試圖通過單擊當前片段中的cardview將當前片段更改爲另一個片段。我在我的切換片段主要活動這種方法被點擊列表時,它工作正常如何從cardview切換片段單擊

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方法。這是造成錯誤。您應該獲取承載此片段的活動的實例,然後調用該方法。如下圖所示,

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

但這樣做,你需要聲明你ListItemClicked方法public以便它可以從其他類進行訪問。所以你必須改變定義爲

public void ListItemClicked(int position) 
{ 
} 
+0

這是否會導致碎片改變? –

+0

是的,它將調用在父活動中定義的ListItemClicked方法,並根據您的代碼加載無線片段。 – Sreeraj