2015-07-22 3 views
0

Я отключаю кнопки после их нажатия. Я хочу, чтобы он автоматически активировался на следующий день в 12 утра. Я действительно не знаю, как это сделать. Как-то я попробовал и написал код ниже.Сохранить состояние кнопки в Xamarin Android

Код отключает кнопки после щелчка. Но он теряет свое состояние после закрытия приложения. Пожалуйста, помогите мне, как я могу это сделать?

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

Вы пробовали использовать AlarmManager? Используйте его, чтобы запланировать статус включения кнопки в определенное время. Ссылка: http://developer.android.com/reference/android/app/AlarmManager.html – Srijith

+0

им не удалось сделать в xamarin, пожалуйста, помогите мне :( –

+0

Вы можете сохранить отключенное состояние в конфигурации Apps и при загрузке App на следующий день проверьте время, если это после 12 часов. Если это так, вы можете включить кнопку, иначе отключите ее. –

ответ

0

Несмотря на то, что этот код находится в java, концепция будет такой же. Как только будильник погаснет, вызывается функция onReceive Broadcastreceiver, где вы можете редактировать sharedpreference для включения/отключения представлений. Если вы не знаете о sharedpreferences, видеть эти ссылки: How do I use SharedPreferences in Xamarin.Android?, SharedPreferences Example in Xamarin Android

BroadcastReceiver:

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(); 

} 
} 

Поэтому, как только вы открываете приложение, проверьте значение sharedpreference и включить или отключить состояние кнопки соответственно , Надеюсь, это поможет.

+0

Спасибо, я попробую это сегодня :) –