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

时间:2017-10-24 09:17:12

标签: c# xamarin xamarin.android

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

  • 单击停止标志后,开始按钮会发生变化。现在,必须将停止标志转移到其他页面并保留,直到再次单击。 (点击停止后与ok标志相同)

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

  • 我需要一些代码如何将ImageButtons的状态传递给其他活动,而在更改页面时没有带停止符号的状态会丢失。 - >直到再次点击。

ImageButton的Codepart更改:

<div>
  <h1 class="albumHeader"> Header One </h1>
  <span class="albumDate"> 12/12/2017 </span>
  <span class="albumCategory"> Jazz </span>
</div>


<button> Design One </button>
<button> Design Two </button>
<button> Design Three </button>

我尝试了什么:

1)

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;

        }
    };

问题在于:

活动1点击开始出现停止标志&gt;滚动到Activity2停止标志未转移&gt;向后滚动到Activity1,开始标志返回,不能再更改。

2)

public static ButtonState btnState;

无法访问Xamarin.Android

1 个答案:

答案 0 :(得分:0)

  

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

正如Dilmah所说,您可以使用IntentbtnState之间传递Activities,当您打开另一个Activity时,可以使用intent.PutExtra()方法传递btnState值:

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