代码之家  ›  专栏  ›  技术社区  ›  user8397869

在多个活动之间传递ImageButton的当前imagestatus,如何?

  •  0
  • user8397869  · 技术社区  · 8 年前

    我有3个活动,每个活动都有相同的布局和相同的按钮。

    • 单击停止标志后,“开始”按钮会更改。现在,停止标志必须转移到其他页面并保留,直到您再次单击。 (与单击停止后的ok符号相同)

    • 当你看到停止标志时,你可以在页面之间来回切换。

    ImageButton的代码部分更改:

    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;
    
            }
        };
    

    我尝试的内容:

    public static ButtonState btnState;
    

    问题是:

    活动1单击开始显示停止标志>滚动至Activity2停止标志未转移>滚动回Activity1开始标志又回来了,不能再更改了。

    Navigation.PushAsync
    

    无法从Xamarin访问。安卓

    1 回复  |  直到 8 年前
        1
  •  0
  •   York Shen    8 年前

    在多个活动之间传递ImageButton的当前imagestatus,如何?

    Intent 通过你的 btnState Activities ,当您打开另一个 Activity ,您可以使用 intent.PutExtra() 传递的方法 B状态 价值:

    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;
            }
        }
    }