2016-07-12 9 views
-1

私はアンドロイドの開発で新しく、ボタンクリックでフラグメントのレイアウトを変更する方法について質問したいと思います。私はボタン のビューを返すようにしようとしているときには、デリゲートを返すのボイドに変換ボタンを使ってフラグメントのレイアウトを変更するにはどうすればいいですか?C#Xamarin

匿名関数が値を返すことができない私は、ボタンをクリックすると、トーストのテキストは(ポップアップするので

ボタンが正常に動作しているようだと述べました戻り値なし)。ここに私のコード

public override View OnCreateView(LayoutInflater p0, ViewGroup p1, Bundle p2) 
{ 
      AppPreferences ap = new AppPreferences(mContext); 
      var rootView = p0.Inflate(Resource.Layout.Kategori, p1, false); 
      Button btnTIM= rootView.FindViewById<Button>(Resource.Id.btnTIM); 
      Button btnManShoes= rootView.FindViewById<Button>(Resource.Id.btnManShoes); 

      btnTIM.Click += delegate 
      { 
         var myActivity = (MenuUtama)this.Activity; 
         AndHUD.Shared.Show(myActivity, "Loading.."); 
         if (myActivity.isOnline() == true) 
          ambilTanggalTIM(ap); 
         else 
          myActivity.internetDropDialog(); 
      }; 

     btnManShoes.Click += delegate 
     { 
       //on this button, i want to change the view to Resource.Layout.ManShoes 
          Toast.MakeText(mContext, "Clicked!", ToastLength.Long).Show(); 
          rootView = p0.Inflate(Resource.Layout.ManShoes, p1, false); 
          return rootView; //Got error when return the View 
     }; 

     return rootView; 
    } 

が私はある、Visual Studioの2015 + Xamarinを使用して、おかげで事前

答えて

0

に私はあなたが交換することはできません、here the link

を、それが動作しない理由を答えを見つけましたフラグメントのレイアウトが設定されると、そのフラグメントのレイアウト 条件付きレイアウトが必要な場合は、レイアウトを再設計する必要があります。 をさらに細かいフラグメントに分割するか、すべてのレイアウトをサブコンテナ(LinearLayoutなど)にグループ化して、すべてを入れてください RelativeLayout、これらのLinearLayoutは、必要なときにsetVisibility()を使用して表示されます。

私のコードを見ることができますが、それは別の方法です。これが最善の方法であるかどうかはわかりません。ここに私のコードは次のとおりです。

public override View OnCreateView(LayoutInflater p0, ViewGroup p1, Bundle p2) 
    { 
     AppPreferences ap = new AppPreferences(mContext); 
     var i = Arguments.GetInt(ArgPlanetNumber); 
     if (i == 0) 
     { 
     var rootView = p0.Inflate(Resource.Layout.Kategori, p1, false); 
     Button btnTIM= rootView.FindViewById<Button>(Resource.Id.btnTIM); 
     Button btnManShoes= rootView.FindViewById<Button>(Resource.Id.btnManShoes); 

     btnTIM.Click += delegate 
     { 
      var myActivity = (MenuUtama)this.Activity; 
      AndHUD.Shared.Show(myActivity, "Loading.."); 
      if (myActivity.isOnline() == true) 
      ambilTanggalTIM(ap); 
      else 
      myActivity.internetDropDialog(); 
       }; 

      btnManShoes.Click += delegate 
      { 
       var fragment = new PlanetFragment(); 
       var arguments = new Bundle(); 

       arguments.PutInt(PlanetFragment.ArgPlanetNumber, 100); 
       fragment.Arguments = arguments; 

       FragmentManager.BeginTransaction() 
       .Replace(Resource.Id.content_frame, fragment) 
       .Commit(); 
      }; 
     } 
     else if(i == 10) 
     { 
     var rootView = p0.Inflate(Resource.Layout.Example, p1, false); 
     return rootView; 
     } 
     else if(i == 100) 
     { 
     var rootView = p0.Inflate(Resource.Layout.ManShoes, p1, false); 
     return rootView; 
     } 

     return rootView; 
    } 

ですから、「i」の変数とあなたが

を好きでrootViewを割り当てることができます
関連する問題