java - 如何更改 Firestore 中特定事件按钮的文本和颜色?

标签 java android firebase button google-cloud-firestore

我想弄清楚在对 firestore 数据库进行某些更新时更改按钮的文本和颜色。下面是我在适配器中用于交易的代码。下面的代码只做临时工作,我想确定一旦完成按钮的颜色和文本应该永久更改。

db.runTransaction(new Transaction.Function<Boolean>() {
    @Override
    public Boolean apply(Transaction transaction) throws FirebaseFirestoreException {
        DocumentSnapshot snapshot = transaction.get(likesRef);
        boolean l1 = snapshot.getBoolean("l1");
        if (l1 == false) {

            transaction.update(likesRef, "l1", true);
           // commentsViewHolder.favPostButton.setBackgroundColor(R.color.colorPrimary);
            commentsViewHolder.favPostButton.setText("Let's Chat");

            return l1;
        } else
        {
            Toast.makeText(CommentActivity.this, "You already liked it", Toast.LENGTH_SHORT).show();
            throw new FirebaseFirestoreException("You already liked",
                    FirebaseFirestoreException.Code.ABORTED);
        }
    }
}).addOnSuccessListener(new OnSuccessListener<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        //button change, button appear
      //  commentsViewHolder.favPostButton.setBackgroundColor(R.color.colorPrimary);
      //  commentsViewHolder.favPostButton.setText("Let's Chat");

        Log.d(TAG, "Transaction success: " + result);
    }
})
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Transaction failure.", e);
            }
        });

最佳答案

“重新加载 session ”是指配置更改还是 Activity 重启? Activity 只是一堆 UI 元素,如果您在运行时更改这些元素然后重新加载应用程序或什至只是旋转屏幕,所有元素都会按照您的 xml 布局文件或 Activity 的 onCreate< 中的设置绘制 方法。

Activity 需要一种方法来恢复它的实例。

关于如何实现这一点有多种解决方案:
• 在 onSaveInstanceState 中保存您的 Activity 信息并在 onCreate
中读取它 • 使用SharedPreferences
• 观察LiveData 对象

关于java - 如何更改 Firestore 中特定事件按钮的文本和颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805455/

相关文章:

java - Jasper Report 找不到类路径

java - 如何在横向模式下检测方向

java - 方法不会覆盖或实现父类(super class)型的方法 - Reactnative

java - 推土机试图将一个类映射到它的接口(interface)

java - Hibernate 嵌套嵌入式主键还是平面字段?

android - 获取 SQLite 单个单元格并在单个 TextView 中显示

android - SurfaceView 示例代码

ios - 在 Firestore 中获取数据

firebase - 如何为Map <String,dynamic>类型的映射添加值?

java - 从 Firebase 导入 Java 类