2017-10-24 1 views
0

私は3つのアクティビティを持っています。それぞれのアクティビティは同じボタンで同じレイアウトになっています。ImageButtonの現在のimagestatusをより多くのアクティビティに渡す方法は?

  • 停止記号を1回クリックすると、開始ボタンが変わります。もう一度クリックするまで停止記号を他のページに移動して残す必要があります。 (停止をクリックした後の確認記号と同じ)

  • 停止記号が表示されている間に、ページ間を行き来することができます。

  • ImageButtonsのステータスを他のアクティビティに渡すには、ページを変更するときに停止記号が表示されない状態でコードを渡す必要があります。 - >もう一度クリックするまで。 ImageButtonの変更のための

Codepart:

ButtonState btnState = ButtonState.start; 
    var button = FindViewById<ImageButton>(Resource.Id.MyImageButton); 
    button.Click += (sender, e) => { 
     if (btnState == ButtonState.start) 
     { 
      btnState = ButtonState.stop; 

      button.SetImageResource(Resource.Drawable.ic_pi1); 
     } 
     else if (btnState == ButtonState.stop) 
     { 
      btnState = ButtonState.ok; 

      button.SetImageResource(Resource.Drawable.ic_pi2); 
     } 
     else 
     { 
      btnState = ButtonState.start; 

     } 
    }; 

私が試したもの:

開始をクリックしてくださいActivity1:

1)はここ

public static ButtonState btnState; 

問題であり、停止記号> sが表示されますActivity2へのクロール停止サインは転送されません>アクティビティ1にスクロールして戻ると、開始サインが戻ってきて、もう変更することはできません。

2)

Navigation.PushAsync 

どのように、より多くの活動の間のImageButtonの現在imagestatusを渡しXamarin.Android

+0

ちょうどメッセージを渡すように見えます。インテント&バンドルを使用して、アクティビティ内のデータを共有できると思います。 – Dilmah

答えて

0

からアクセスできないのですか?

Dilmahが言ったように、あなたは、あなたのbtnStateActivities間を渡すためにIntentを使用することができますが、別のActivityを開いたとき、あなたはbtnState値渡すintent.PutExtra()メソッドを使用することができます。際に値を取得するには

Intent intent = new Intent(this, typeof(Activity2)); 
intent.PutExtra("ButtonState", btnState.ToString()); 
StartActivity(intent); 

をシステムはActivity2を開きます:

protected override void OnCreate(Bundle savedInstanceState) 
{ 
    base.OnCreate(savedInstanceState); 
    SetContentView(Resource.Layout.layout2); 
    var clickButton = FindViewById<ImageButton>(Resource.Id.activity2_button); 

    if (Intent != null) 
    { 
     string nameString = Intent.GetStringExtra("ButtonState"); 
     if (nameString.Equals("start")) 
     { 
      btnState = ButtonState.start; 
      clickButton.SetImageResource(Resource.Drawable.ic_pi1); 
     } 
     else if (nameString.Equals("stop")) 
     { 
      btnState = ButtonState.stop; 
      clickButton.SetImageResource(Resource.Drawable.ic_pi2); 
     } 
     else 
     { 
      btnState = ButtonState.ok; 
     } 
    } 
} 
関連する問題