android - 数据库调用后如何设置文本

标签 android firebase textview firebase-realtime-database

我不确定如何解决这个问题。我有一个 TextView(包含在 fragment 中),它需要保存来自 firebase 的数据(来自 MainActivity 中包含的监听器)。我编写 Java 的时间不长,所以我想知道除了将 textview 设为静态(因为这是不好的做法)之外,我还有什么选择?

下面是MainActivity的onCreate中调用的;

    private void getExtras(String uid) {
    mFirebaseRef.child("users").child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
                User user = dataSnapshot.getValue(User.class);
                System.out.println(TAG + "TEST: " + user.getUsername());
                CURRENT_USER.setSex(user.getSex());
                CURRENT_USER.setEmail(user.getEmail());
                CURRENT_USER.setAge(user.getAge());
                CURRENT_USER.setUsername(user.getUsername());
                CURRENT_USER.setCreatedTime(user.getCreatedTime());
                Log.e(TAG, "Logged user is "+ CURRENT_USER.getId());
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

下面是我 fragment 的onViewCreated:

    @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    tvUserTitle = (TextView) getView().findViewById(R.id.tvUserTitle);
    tvUserTitle.setText(MainScreen.CURRENT_USER.getUsername());
}

如您所见, fragment 是在设置变量之前创建的,因此它显示为空白(null)。

最佳答案

您需要从 MainActivity 获取对 Fragment 的引用,然后调用一个方法来设置 TextView 文本。

在你的 MainActivity 回调中

CustomFragment customFragment =(CustomFragment)getSupportFragmentManager().findFragmentById(R.id.custom_frag_id);
customFragment.setTextView(firebaseText);

在你的 CustomFragment 类中

public void setTextView(String text){
    myTextView.setText(text);
}

关于android - 数据库调用后如何设置文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621738/

相关文章:

java - 我在获取 firebase 图像的 url 时遇到问题

android - 我有很多按钮和 TextView ,这是定义它们的正确方法吗

swift - 更改 TextView 中字符串数组的样式 - swift - 编辑

java - 如何在android中以编程方式获取文本阴影颜色?

android - 如何创建两个图层并使用按钮在它们之间切换

android - HERE SDK 在 Android 8 的后台无法使用

java - 如何让两种不同类型的用户自动登录不同的 Activity 而无需再次登录?

javascript - 通过更新 ref() 增加项目

android - FCM 推送通知 : MismatchSenderId

android - 自定义 TextView - 在构造函数之前调用的 setText()