2017-06-05 95 views

回答

0

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

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个月alredy通过使用这种方法

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

这里monthsBetweenDates方法:

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

希望它可以帮助

+0

我怎么能检查3个月的时候已经通过? @ fn5341 –

+0

@felipecrespo我更新了答案 – fn5341

+0

我这样做,请检查日期'long fechaFuturo = new Date()。getTime()+ TimeUnit.MILLISECONDS.convert(60,TimeUnit.DAYS); putLong(“fechaFutura”,fechaFuturo);如果(preferences.getLong(“fechaFutura”,fechaFuturo)= new Date()。getTime()){ mCambiarFotoPErfil.setVisibility(View.VISIBLE); } ' –