gpt4 book ai didi

java - 从其 Activity 外部定位按钮

转载 作者:行者123 更新时间:2023-11-30 00:30:51 25 4
gpt4 key购买 nike

我有 Firebaselistener 类,它监听 1 的值。当达到这个值时,我希望按钮 drawable 发生变化。最初我在我的主要 Activity 中设置了这一切并且它工作正常使用:

if(dls==1){
m.setBackground(getResources().getDrawable(R.drawable.buttonbkground2));
}

在我的主要 Activity 中使用 valueEventlistener 并监听值。

但现在我已经设置了一个类来做同样的事情,但我无法从主要 Activity 中访问按钮 ID。

public class RewardValueListener  implements ValueEventListener {

FirebaseAuth mAuth;
String userid;
int i;
View view;
String dls;
Button mButton;
Context c;

public RewardValueListener() {

}

@Override
public void onDataChange(DataSnapshot dataSnapshot) {

mAuth = FirebaseAuth.getInstance();
FirebaseUser user = mAuth.getCurrentUser();
userid = user.getUid();
dls = dataSnapshot.child(userid).child("counter").getValue(String.class);
Log.d("tag", "Value: " + dls);
i = Integer.parseInt(dls);
if (i == 1) {

Log.d("tag", "Congrats " + i);


mButton.setBackground(c.getResources().getDrawable(R.drawable.buttonbkground2));

}
}
@Override
public void onCancelled(FirebaseError firebaseError) {

}

***包含蟋蟀答案的代码编辑

  public void getButton(Button button,Context context) {
mButton = button;
c=context;
}

我知道这与调用 View 有关,但我该如何调用它以及在何处调用它?

编辑

感谢@cricket_007 的回答非常有效。现在我的代码可以正常工作,可以调用我的 Listener 类来更改我的主要 Activity 中的所有按钮,而不仅仅是一个按钮。

如果以这种方式编写代码,我可以让每个按钮都工作,但有没有办法压缩它,这样我就不必溢出我的主要 Activity :

  RewardValueListener reward1 = new RewardValueListener();
mListref.child("RewardsSystem").addValueEventListener(reward1);
reward1.getButton(mstreaming,mcontext);
RewardValueListener reward2 = new RewardValueListener();
mListref.child("RewardsSystem").addValueEventListener(reward2);
reward2.getButton(mcustom,mcontext);
RewardValueListener reward3 = new RewardValueListener();
mListref.child("RewardsSystem").addValueEventListener(reward3);
reward3.getButton(mlauncher,mcontext);
RewardValueListener reward4 = new RewardValueListener();
mListref.child("RewardsSystem").addValueEventListener(reward4);
reward4.getButton(mmovies,mcontext);
etc etc...

最佳答案

只需添加到构造函数中。

final Button mButton;
final Context mContext;
public RewardValueListener(Context context, Button button) {
mContext = context;
mButton = button;
}

并使用它代替按钮的 findViewByIdmContext.getResources()

注意:创建此类时需要有一个按钮可用

关于java - 从其 Activity 外部定位按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com