因此,我需要在单击后使按钮消失,并在一分钟后再次显示。即使当我离开当前活动并返回到当前活动并且一分钟未过去时,该按钮也不会出现。
我已经尝试过类似的方法,但是它似乎不起作用:
SharedPreferences preferences = getSharedPreferences("preferences", Context.MODE_PRIVATE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
preferences.edit().putLong("timestamp", System.currentTimeMillis()).apply();
//some other logic
button.setVisibility(View.INVISIBLE);
}
});
if ((preferences.getLong("timestamp", 0) + 60000) == System.currentTimeMillis()) {
button.setVisibility(View.VISIBLE);
}
有谁知道如何进行这项工作?还是有另一种方法可以使我更轻松?
最佳答案
您必须做三件事:
第一:
检查活动的onResume()中的时间戳,并根据该时间戳设置setVisibility()。
将此代码添加到您的活动中:
@override
protected void onResume(){
super.onResume()
if ((preferences.getLong("timestamp", 0) + 60000) <= System.currentTimeMillis()) {
rereshImageView.setVisibility(View.VISIBLE);
}else{
refreshImageView.setVisibility(View.GONE);
}
}
第二:
使用此代码再次显示按钮
new Handler().postDelayed(new Runnable(){
@Override
public void run() {
refreshImageView.setVisibility(View.VISIBLE);
}
} , 60000);
第三:
将onResume()中的条件更改为此代码:
(等于等于变为较小的等于)
(因为您不能保证一分钟后会回来。
if ((preferences.getLong("timestamp", 0) + 60000) <= System.currentTimeMillis()) {
refreshImageView.setVisibility(View.VISIBLE);
}
希望对您有所帮助。