【发布时间】:2019-10-16 21:20:23
【问题描述】:
所以基本上,当用户在我的应用程序中进行“高级”活动时,他会看到一个显示“购买高级”的按钮。当他单击它时,Firestore 中的文档会更新(从 false 到 true 的布尔值)并且按钮消失,而不是按钮出现 TextView。当用户导航回 MainActivity 并从那里再次导航到“高级”活动时,他再次看到“购买高级”按钮,这是我不想要的,因为他已经“购买”了它。问题是当用户单击按钮时,如何实现布局视图永久更改,因此当用户导航回活动时,他将无法再次购买。我不想让他看到按钮。
我应该使用在 Firestore 中的文档中单击后更改的布尔值(高级成员:true)来执行此操作吗?喜欢:如果文档显示“高级会员资格:true”设置按钮可见性消失等。这会在用户每次导航到 Activity 时对 Firestore 进行“读取”,有没有更好的方法?
这是我的购买按钮的onClickListener:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_premium_purchase);
purchase = findViewById(R.id.card_view_premium_purchase);
premiumTextView = findViewById(R.id.premium_purchase_success);
premiumTextView.setVisibility(View.GONE);
purchase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String username = user.getDisplayName();
DocumentReference userRef = db.collection("User").document(username);
// Set the "pro membership" to true
userRef
.update("pro membership", true).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully updated!");
Toast.makeText(PremiumPurchaseActivity.this, "Guess Premium successfully bought", Toast.LENGTH_SHORT).show();
premiumTextView.setVisibility(View.VISIBLE);
purchase.setVisibility(View.GONE);
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error updating document", e);
}
});
}
});
}
【问题讨论】:
标签: android firebase google-cloud-firestore