android - 使用共享首选项单击后一分钟后显示 View

标签 android view onclick sharedpreferences

所以我需要让一个按钮在点击后消失,并在一分钟后再次出现。即使当我离开当前 Activity 并回到它并且一分钟还没有过去时,按钮也不应该出现。 我已经尝试过类似的方法,但它似乎不起作用:

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

有没有人知道如何让它工作?或者有其他方法可以让这更容易吗?

最佳答案

你必须做三件事:

首先: 检查 Activity 的 onResume() 中的时间戳,并据此检查 setVisibility()

将此代码添加到您的 Activity 中:

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

希望对您有所帮助。

关于android - 使用共享首选项单击后一分钟后显示 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51836211/

相关文章:

java - recyclerview 列表不显示通过 arraylist 传递的数据

android - 二进制 XML 文件行 #19 : Error inflating class fragment

java - 评估字符串中的数学表达式

java - 如何在 Java Swing 应用程序中管理来自 Controller 的 View 更新

android - 使用 Fragment 中的 MapView 对象与 Fragment 中的 MapFragment 相比,google maps v2 有什么优点/缺点?

IOS 如何将数组转至另一个 View Controller

java - Android RelativeLayout 改变颜色 onClick

android - 在获取 imageView id 的 ViewFlipper 中动态创建 imageView

android EditText imeOptions OnClick

javascript - 如何防止最后一里的点击事件触发?