2016-04-26 94 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