我需要从单独的类内部调用 Activity ,该类包含 Firebase 的 onDataChange
方法。
因此,我可以在 Firebase 传递我想要的数据后调用 Activity。我只是无法从我的类中插入 Intent
的 startActivity
或 getBaseContext
方法。
我的类(class)是 myUser:
public class myUser{
private static ArrayList<String> userData;
public static ArrayList<String> getUserData() {
return userData;
}
...
}
我的代码(在 myUser 内部)是:
public static void setUserData(FirebaseAuth mAuth) {
FirebaseDatabase database = FirebaseDatabase.getInstance();
userData = new ArrayList<>();
String uID;
uID = mAuth.getCurrentUser().getUid();
DatabaseReference userRef = database.getReference("users/" + uID);
userRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String cpf, email, name, tel;
Boolean depend;
int uType;
cpf = dataSnapshot.child("cpf").getValue(String.class);
email = dataSnapshot.child("email").getValue(String.class);
name = dataSnapshot.child("name").getValue(String.class);
tel = dataSnapshot.child("tel").getValue(String.class);
depend = dataSnapshot.child("depend").getValue(Boolean.class);
uType = dataSnapshot.child("uType").getValue(Integer.class);
userData.add(name);
userData.add(email);
userData.add(cpf);
userData.add(tel);
userData.add(depend.toString());
userData.add(String.valueOf(uType));
//HERE IS WHERE I NEED TO CALL THE ACTIVITY, AFTER GET ALL DATA
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
我如何调用或实例化我的类myUser
并不重要。该代码正在运行,但它返回错误,因为 onDataChange
(在 myUser
类内)是在 Activity 打开后运行的。因此,ArrayList 返回 null 或空。
这就是为什么我需要从我的类myUser
的方法setUserData
内部调用我的Activity
我尝试用许多其他类扩展我的类myUser
,但没有成功。
最佳答案
更改此方法
public static void setUserData(FirebaseAuth mAuth) {
至
public static void setUserData(Context context, FirebaseAuth mAuth) {
然后从您的 Activity 类中调用它,如下所示
setUserData(this, mAuth);
这样您就可以在 myUser 类中使用 Activity 上下文。
关于java - 从类内部调用 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59920656/