【发布时间】:2020-01-27 03:33:23
【问题描述】:
我需要从包含 Firebase 的方法 onDataChange 的单独类中调用活动。
所以,我可以在 Firebase 提供我想要的数据后调用 Activity。我只是无法从我的类中插入方法startActivity 或getBaseContext 的Intent。
我的班级是我的用户:
public class myUser{
private static ArrayList<String> userData;
public static ArrayList<String> getUserData() {
return userData;
}
...
}
我的代码(INSIDE 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 类中)在活动打开后运行。因此,ArrayList 返回 null 或空。
这就是为什么我需要从我的类 myUser 的方法 setUserData 内部调用我的 Activity
我尝试用许多其他课程扩展我的课程myUser,但没有成功。
【问题讨论】:
-
您可以从另一个
Activity开始一个Activity。所以,如果myUser不是一个Activity,你肯定会从一个Activity 调用setUserData:你应该从那里启动这个Activity,或者至少将一个Context参数传递给setUserData -
下面 Majuran 的回答告诉你怎么做。但是,如果我是你,我宁愿重组应用程序,这样你就不需要从 pojo 启动 Activity。
-
如果您对干净的 Firebase 身份验证感兴趣,可以查看此article。
-
谢谢大家。实际上,我很久以前就在外面工作,我没有时间继续编写代码。当我完成这项工作时,我会尝试这个答案并返回一个响应。
标签: java android firebase firebase-realtime-database android-activity