Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何允许单击按钮";";然后消失一个月_Android_Date_Button_Time - Fatal编程技术网

Android 如何允许单击按钮";";然后消失一个月

Android 如何允许单击按钮";";然后消失一个月,android,date,button,time,Android,Date,Button,Time,实现一个简单的按钮,改变信息,但我需要的信息只改变3次,我需要消失那个按钮 当超过三次点击次数,但我不知道如何操作以及如何在三个月内将其消失时您可以使用计数器和日期变量来存储信息。将它们保存在共享首选项中,并随时获取它们 final SharedPreferences prefs = getSharedPreferences("MySharedPrefName", MODE_PRIVATE); final Button button = findViewById(R.id.button_id

实现一个简单的按钮,改变信息,但我需要的信息只改变3次,我需要消失那个按钮
当超过三次点击次数,但我不知道如何操作以及如何在三个月内将其消失时

您可以使用计数器和日期变量来存储信息。将它们保存在共享首选项中,并随时获取它们

final SharedPreferences prefs = getSharedPreferences("MySharedPrefName", MODE_PRIVATE); 

final Button button = findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
          int counter = prefs.getInt("counter", 0); //0 is the default value.
          counter++;
          editor.putInt("counter", counter);
          if(counter == 3){
              button.setVisibility(View.GONE);
              Date myDate = ;
              String format = "yyyy-MM-dd";
              String prefData = SimpleDateFormat(format).format(myDate);
              prefs.putString("date", prefDate); 
          }
      }
 });
之后,您可以从共享首选项中获取日期,并检查是否已经过了3个月,以便修改按钮的可见性

要检查3个月是否已经过去,请使用此方法

private boolean havePassedThreeMonths(){


  //GET CURRENT DATE
  Calendar c = Calendar.getInstance();
  Date currentDate = c.getTime();


  //GET DATE FROM PREFERENCES
  prefDate = prefs.getString("Date", "");
  String format = "yyyy-MM-dd";
  Date date = new SimpleDateFormat(format).parse(prefDate);

  //Compare the two dates
  return monthsBetweenDates(date, currentDate) > 3;
}
此处为MonthBetweenDates方法:

public int monthsBetweenDates(Date startDate, Date endDate){

        Calendar start = Calendar.getInstance();
        start.setTime(startDate);

        Calendar end = Calendar.getInstance();
        end.setTime(endDate);

          int monthsBetween = 0;
            int dateDiff = end.get(Calendar.DAY_OF_MONTH)-start.get(Calendar.DAY_OF_MONTH);      

if(dateDiff<0) {
                int borrrow = end.getActualMaximum(Calendar.DAY_OF_MONTH);           
                 dateDiff = (end.get(Calendar.DAY_OF_MONTH)+borrrow)-start.get(Calendar.DAY_OF_MONTH);
                 monthsBetween--;

if(dateDiff>0) {
                     monthsBetween++;
                 }
            }
            else {
                monthsBetween++;
            }      
            monthsBetween += end.get(Calendar.MONTH)-start.get(Calendar.MONTH);      
            monthsBetween  += (end.get(Calendar.YEAR)-start.get(Calendar.YEAR))*12;      
            return monthsBetween;
     }
public int months日期之间(日期开始日期、日期结束日期){
日历开始=Calendar.getInstance();
开始设定时间(起始日期);
日历结束=Calendar.getInstance();
结束。设置时间(结束日期);
int monthsbevent=0;
int dateDiff=end.get(日历月日)-start.get(日历月日);
if(dateDiff0){
monthsbween++;
}
}
否则{
monthsbween++;
}      
monthsBetween+=end.get(Calendar.MONTH)-start.get(Calendar.MONTH);
monthsBetween+=(end.get(Calendar.YEAR)-start.get(Calendar.YEAR))*12;
返回月间隔;
}

希望这有帮助

,3个月过去了,我如何检查@fn5341i执行了此操作,请检查日期`long fechaFuturo=new date().getTime()+TimeUnit.millizes.convert(60,TimeUnit.DAYS);preferences.edit().putLong(“fechaFutura”,fechaFuturo);if(preferences.getLong(“fechaFutura”,fechaFuturo)==new Date().getTime()){mCambiarFotoPErfil.setVisibility(View.VISIBLE);}`