保存Xamarin Android中的按钮状态

时间:2015-07-22 11:41:06

标签: android xamarin

我按下按钮后禁用按钮。我想让它自动激活 第二天早上12点。我真的不知道该怎么做。不知怎的,我尝试并编写了下面的代码。

单击后代码会禁用按钮。但是一旦应用程序关闭,它就会失去状态。请帮帮我怎么做?

public class MainActivity : Activity
    {


        Button button1;
        Button button2;



        protected override void OnCreate (Bundle savedInstanceState)
        {
            base.OnCreate (savedInstanceState);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);
            mybroadcast myrec = new mybroadcast ();
            Database sqldb1 = ((GlobalClass)this.Application).sqldb;//This will contain "Hello World"
            string stringFromApplicationClass = ((GlobalClass)this.Application).myString;//This will contain "Hello World"
            var now = DateTime.Now;
            string dataFormatada = string.Format("{0:00}/{1:00}/{2:0000}", now.Month, now.Day, now.Year);
            string currentTime = (string.Format ("Current Time: {0}", now.Hour));
            // Get our button from the layout resource,
            // and attach an event to it
            button1 = FindViewById<Button> (Resource.Id.Button1);
            button2 = FindViewById<Button> (Resource.Id.Button2);


            button1.Click += delegate {
                sqldb1.AddRecord (1);

            };


            button2.Click += delegate {

                sqldb1.AddRecord (0);
            };
        }


        public void start()
        {
            Intent myIntent = new Intent (this,typeof( mybroadcast)); 

            AlarmManager alarmMgr = (AlarmManager) this.GetSystemService(Context.AlarmService);
            PendingIntent pendingIntent = PendingIntent.GetService(this, 0, myIntent, 0);
            Calendar calendar =  Calendar.GetInstance (Java.Util.TimeZone.Default);

            calendar.Set(CalendarField.HourOfDay, 12);
            calendar.Set(CalendarField.Millisecond, 00);
            calendar.Set(CalendarField.Second, 00);
            alarmMgr.SetRepeating(AlarmType.Rtc,0, 10, pendingIntent); //Repeat every 24 hours

        }



        public class mybroadcast:BroadcastReceiver
        {
            public override void OnReceive(Context context, Intent myIntent)
            {
                ((MainActivity)context).enablebutton();
            }
        }
        public override bool OnCreateOptionsMenu(IMenu menu)
        {
            base.OnCreateOptionsMenu (menu);

            MenuInflater inflater = this.MenuInflater;

            inflater.Inflate (Resource.Menu.items, menu);

            return base.OnCreateOptionsMenu(menu);
        }

        public override bool OnOptionsItemSelected (IMenuItem item)
        {
            base.OnOptionsItemSelected (item);

            switch (item.ItemId)
            {
            case Resource.Id.week:
                StartActivity(typeof(SecondActivity));
                break;
            case Resource.Id.month:
                {
                    StartActivity(typeof(ThirdActivity));
                    break;
                }
            default:
                break;
            }

            return true;

        }



        public void disablebutton()
        {

            button1.Enabled = false;
            button2.Enabled = false;
        }


        public void enablebutton()
        {

            button1.Enabled = true;
            button2.Enabled = true;
        }
        }

1 个答案:

答案 0 :(得分:0)

即使这段代码是在java中,概念也是一样的。警报响起后,将调用Broadcastreceiver的onReceive,您可以在其中编辑共享首选项以启用/禁用视图。如果您不了解共享偏好,请参阅以下链接:How do I use SharedPreferences in Xamarin.Android?SharedPreferences Example in Xamarin Android

<强>广播接收器:

public class ReminderActivity extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    //Use sharepreference and set the button state disabled or enabled.
    SharedPreferences mSharedPreferences = getSharedPreferences("MyPref", 0);
    mSharedPreferences..edit().putBoolean("btn_enable", true).commit();

}
}

因此,一旦打开应用程序,请检查共享偏好值并相应地启用或禁用按钮状态。 希望这会有所帮助。