2017-09-21 13 views
0

いくつかのアクティビティでポップアップメニューボタンがいくつかあります。持っているすべての活動でそうxamarin androidのアクティビティ間でコードを共有する方法

var button = FindViewById(Resource.Id.moreButton); 

button.Click += (s, arg) => 
{ 
    PopupMenu menu = new PopupMenu(this, button); 
    menu.Inflate(Resource.Menu.PopupMenu); 
    menu.Show(); 

    menu.MenuItemClick += (s1, arg1) => 
    { 
     switch (arg1.Item.TitleFormatted.ToString()) 
     { 
      case "Profile": 
       StartActivity(typeof(ProfileView)); 
       break; 
      case "Prices": 
       StartActivity(typeof(PricesView)); 
       break; 
      case "Terms": 
       StartActivity(typeof(TermsView)); 
       break; 
      case "Privacy": 
       StartActivity(typeof(PrivacyView)); 
       break; 
     } 
    }; 
}; 

:問題は、初期化のためのコードは次のようになります...すべての活動で、私は何度も何度もポップアップメニューを初期化するために同じコードを使用する必要があること

ですポップアップメニューボタン、ボタンを作るためにこのコードを使用する必要があります....どのように私はすべての活動を通じてこのコードの部分を共有することができますか?

+0

アクティビティ内で再利用するクラスやメソッドをリファクタリングしたり、アクティビティをサブクラス化したり、すべての共通コードをそこに配置したり、そのサブクラスをアクティビティの基本クラスとして使用したり、あなたの「スクリーン」ごとに独立したアクティビティを作成するには、「フラグメント」を使用します。フラグメントを使用した動的UIの構築:https://developer.android.com/training/basics/fragments/index.html – SushiHangover

答えて

1

「PopupMenu」を拡張する独自のクラスを作成し、すべてを初期化して表示するメソッドを追加します。私はこれをテストする機会を持っていなかった、

var button = FindViewById(Resource.Id.moreButton); 

button.Click += (s, arg) => { 
    PopupMenu menu = new PopupMenu(this, button); 
    menu.display(); 
}; 

クイック免責事項:

public class MyPopupMenu : PopupMenu 
{ 
    //May need to add constructors 

    public void display() 
    { 
     this.Inflate(Resource.Menu.PopupMenu); 
     this.Show(); 

     //May need to change EventArgs to a valid subclass of EventArgs 
     this.MenuItemClicked += (object sender, EventArgs arg1) => 
     { 
      switch (arg1.Item.TitleFormatted.ToString()) 
      { 
       case "Profile": 
        break; 
       case "Prices": 
        break; 
       case "Terms": 
        break; 
       case "Privacy": 
        break; 
      } 
     } 
    } 
} 

は、その後、あなたは、各ページにあなたのコードを短縮することができます。ちょうど私のアイデア。

+0

うまくいらっしゃいましたが、小さな問題があります。すべての場合に必要ですどこかをナビゲートする 'StartActivity'メソッドを呼び出しますが、今は' MyPopupClass'でこれを行うことはできません... –

+0

これはうまくいきません。 OnStartActicityをどこでどのように呼び出すかについてのコードを確認できますか? – cvanbeek

+0

私はクエストオンのコードを更新しました。私が 'StartActivity'を呼び出す場所を追加しました –

関連する問題