2016-04-26 13 views
0

現在のフラグメントを別のフラグメントに変更しようとしていますが、現在のフラグメントでカードビューをクリックしています。私はリストがフラグメントを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); 
}; 

しかし、そうするためにあなたはそれが他のクラスからアクセスできるようにpublicとしてあなたListItemClickedメソッドを宣言する必要があります。そのため、定義を

public void ListItemClicked(int position) 
{ 
} 
+0

に変更する必要があります。これによりフラグメントが変更されますか? –

+0

はい、親アクティビティで定義されたListItemClickedメソッドが呼び出され、ラジオ・フラグメントがコードごとにロードされます。 – Sreeraj

関連する問題